diff options
Diffstat (limited to 'clang')
16 files changed, 99 insertions, 94 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 15a73aa60ce..34d620af944 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -8519,6 +8519,8 @@ def err_omp_expected_var_name_member_expr : Error< "expected variable name%select{| or data member of current class}0">; def err_omp_expected_var_name_member_expr_or_array_item : Error< "expected variable name%select{|, data member of current class}0, array element or array section">; +def err_omp_expected_addressable_lvalue_or_array_item : Error< + "expected addressable lvalue expression, array element or array section">; def err_omp_expected_named_var_member_or_array_expression: Error< "expected expression containing only member accesses and/or array sections based on named variables">; def err_omp_bit_fields_forbidden_in_clause : Error< diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 4f1cd5c2452..72a7daa919c 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -10486,23 +10486,26 @@ Sema::ActOnOpenMPDependClause(OpenMPDependClauseKind DepKind, } OpsOffs.push_back({RHS, OOK}); } else { - // OpenMP [2.11.1.1, Restrictions, p.3] - // A variable that is part of another variable (such as a field of a - // structure) but is not an array element or an array section cannot - // appear in a depend clause. - auto *DE = dyn_cast<DeclRefExpr>(SimpleExpr); auto *ASE = dyn_cast<ArraySubscriptExpr>(SimpleExpr); - auto *OASE = dyn_cast<OMPArraySectionExpr>(SimpleExpr); if (!RefExpr->IgnoreParenImpCasts()->isLValue() || - (!ASE && !DE && !OASE) || (DE && !isa<VarDecl>(DE->getDecl())) || (ASE && !ASE->getBase() ->getType() .getNonReferenceType() ->isPointerType() && !ASE->getBase()->getType().getNonReferenceType()->isArrayType())) { - Diag(ELoc, diag::err_omp_expected_var_name_member_expr_or_array_item) - << 0 << RefExpr->getSourceRange(); + Diag(ELoc, diag::err_omp_expected_addressable_lvalue_or_array_item) + << RefExpr->getSourceRange(); + continue; + } + bool Suppress = getDiagnostics().getSuppressAllDiagnostics(); + getDiagnostics().setSuppressAllDiagnostics(/*Val=*/true); + ExprResult Res = CreateBuiltinUnaryOp(SourceLocation(), UO_AddrOf, + RefExpr->IgnoreParenImpCasts()); + getDiagnostics().setSuppressAllDiagnostics(Suppress); + if (!Res.isUsable() && !isa<OMPArraySectionExpr>(SimpleExpr)) { + Diag(ELoc, diag::err_omp_expected_addressable_lvalue_or_array_item) + << RefExpr->getSourceRange(); continue; } } diff --git a/clang/test/OpenMP/target_depend_messages.cpp b/clang/test/OpenMP/target_depend_messages.cpp index 48bd94180c1..3eb3af132d8 100644 --- a/clang/test/OpenMP/target_depend_messages.cpp +++ b/clang/test/OpenMP/target_depend_messages.cpp @@ -36,21 +36,21 @@ int main(int argc, char **argv, char *env[]) { foo(); #pragma omp target depend (out: ) // expected-error {{expected expression}} foo(); - #pragma omp target depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} foo(); #pragma omp target depend (out :S1) // expected-error {{'S1' does not refer to a value}} foo(); - #pragma omp target depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} + #pragma omp target depend(in : argv[1][1] = '2') foo(); - #pragma omp target depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target depend (in : argv[0]) foo(); #pragma omp target depend (in : ) // expected-error {{expected expression}} foo(); - #pragma omp target depend (in : main) // expected-error {{expected variable name, array element or array section}} + #pragma omp target depend (in : main) foo(); - #pragma omp target depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} foo(); diff --git a/clang/test/OpenMP/target_enter_data_depend_messages.cpp b/clang/test/OpenMP/target_enter_data_depend_messages.cpp index 4aa122355ba..77e7039e8e2 100644 --- a/clang/test/OpenMP/target_enter_data_depend_messages.cpp +++ b/clang/test/OpenMP/target_enter_data_depend_messages.cpp @@ -38,21 +38,21 @@ int tmain(T argc, S **argv, R *env[]) { foo(); #pragma omp target enter data map(to: i) depend (out: ) // expected-error {{expected expression}} foo(); - #pragma omp target enter data map(to: i) depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target enter data map(to: i) depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} foo(); #pragma omp target enter data map(to: i) depend (out :S1) // expected-error {{'S1' does not refer to a value}} foo(); - #pragma omp target enter data map(to: i) depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} + #pragma omp target enter data map(to: i) depend(in : argv[1][1] = '2') // expected-error {{expected addressable lvalue expression, array element or array section}} foo(); - #pragma omp target enter data map(to: i) depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target enter data map(to: i) depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target enter data map(to: i) depend (in : argv[0]) foo(); #pragma omp target enter data map(to: i) depend (in : ) // expected-error {{expected expression}} foo(); - #pragma omp target enter data map(to: i) depend (in : tmain) // expected-error {{expected variable name, array element or array section}} + #pragma omp target enter data map(to: i) depend (in : tmain) foo(); - #pragma omp target enter data map(to: i) depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target enter data map(to: i) depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target enter data map(to: i) depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} foo(); @@ -113,21 +113,21 @@ int main(int argc, char **argv, char *env[]) { foo(); #pragma omp target enter data map(to: i) depend (out: ) // expected-error {{expected expression}} foo(); - #pragma omp target enter data map(to: i) depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target enter data map(to: i) depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} foo(); #pragma omp target enter data map(to: i) depend (out :S1) // expected-error {{'S1' does not refer to a value}} foo(); - #pragma omp target enter data map(to: i) depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} + #pragma omp target enter data map(to: i) depend(in : argv[1][1] = '2') foo(); - #pragma omp target enter data map(to: i) depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target enter data map(to: i) depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target enter data map(to: i) depend (in : argv[0]) foo(); #pragma omp target enter data map(to: i) depend (in : ) // expected-error {{expected expression}} foo(); - #pragma omp target enter data map(to: i) depend (in : main) // expected-error {{expected variable name, array element or array section}} + #pragma omp target enter data map(to: i) depend (in : main) foo(); - #pragma omp target enter data map(to: i) depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target enter data map(to: i) depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target enter data map(to: i) depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} foo(); diff --git a/clang/test/OpenMP/target_exit_data_depend_messages.cpp b/clang/test/OpenMP/target_exit_data_depend_messages.cpp index cdefbeed08b..ce8d237f75e 100644 --- a/clang/test/OpenMP/target_exit_data_depend_messages.cpp +++ b/clang/test/OpenMP/target_exit_data_depend_messages.cpp @@ -38,21 +38,21 @@ int tmain(T argc, S **argv, R *env[]) { foo(); #pragma omp target exit data map(from: i) depend (out: ) // expected-error {{expected expression}} foo(); - #pragma omp target exit data map(from: i) depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target exit data map(from: i) depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} foo(); #pragma omp target exit data map(from: i) depend (out :S1) // expected-error {{'S1' does not refer to a value}} foo(); - #pragma omp target exit data map(from: i) depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} + #pragma omp target exit data map(from: i) depend(in : argv[1][1] = '2') // expected-error {{expected addressable lvalue expression, array element or array section}} foo(); - #pragma omp target exit data map(from: i) depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target exit data map(from: i) depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target exit data map(from: i) depend (in : argv[0]) foo(); #pragma omp target exit data map(from: i) depend (in : ) // expected-error {{expected expression}} foo(); - #pragma omp target exit data map(from: i) depend (in : tmain) // expected-error {{expected variable name, array element or array section}} + #pragma omp target exit data map(from: i) depend (in : tmain) foo(); - #pragma omp target exit data map(from: i) depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target exit data map(from: i) depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target exit data map(from: i) depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} foo(); @@ -113,21 +113,21 @@ int main(int argc, char **argv, char *env[]) { foo(); #pragma omp target exit data map(from: i) depend (out: ) // expected-error {{expected expression}} foo(); - #pragma omp target exit data map(from: i) depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target exit data map(from: i) depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} foo(); #pragma omp target exit data map(from: i) depend (out :S1) // expected-error {{'S1' does not refer to a value}} foo(); - #pragma omp target exit data map(from: i) depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} + #pragma omp target exit data map(from: i) depend(in : argv[1][1] = '2') foo(); - #pragma omp target exit data map(from: i) depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target exit data map(from: i) depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target exit data map(from: i) depend (in : argv[0]) foo(); #pragma omp target exit data map(from: i) depend (in : ) // expected-error {{expected expression}} foo(); - #pragma omp target exit data map(from: i) depend (in : main) // expected-error {{expected variable name, array element or array section}} + #pragma omp target exit data map(from: i) depend (in : main) foo(); - #pragma omp target exit data map(from: i) depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target exit data map(from: i) depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target exit data map(from: i) depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} foo(); diff --git a/clang/test/OpenMP/target_parallel_depend_messages.cpp b/clang/test/OpenMP/target_parallel_depend_messages.cpp index fde940be1aa..24c69e95cc0 100644 --- a/clang/test/OpenMP/target_parallel_depend_messages.cpp +++ b/clang/test/OpenMP/target_parallel_depend_messages.cpp @@ -36,21 +36,21 @@ int main(int argc, char **argv, char *env[]) { foo(); #pragma omp target parallel depend (out: ) // expected-error {{expected expression}} foo(); - #pragma omp target parallel depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target parallel depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} foo(); #pragma omp target parallel depend (out :S1) // expected-error {{'S1' does not refer to a value}} foo(); - #pragma omp target parallel depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} + #pragma omp target parallel depend(in : argv[1][1] = '2') foo(); - #pragma omp target parallel depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target parallel depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target parallel depend (in : argv[0]) foo(); #pragma omp target parallel depend (in : ) // expected-error {{expected expression}} foo(); - #pragma omp target parallel depend (in : main) // expected-error {{expected variable name, array element or array section}} + #pragma omp target parallel depend (in : main) foo(); - #pragma omp target parallel depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target parallel depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target parallel depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} foo(); diff --git a/clang/test/OpenMP/target_parallel_for_depend_messages.cpp b/clang/test/OpenMP/target_parallel_for_depend_messages.cpp index cf17d7a5def..19872566161 100644 --- a/clang/test/OpenMP/target_parallel_for_depend_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_depend_messages.cpp @@ -37,21 +37,21 @@ int main(int argc, char **argv, char *env[]) { for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for depend (out: ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); - #pragma omp target parallel for depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target parallel for depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for depend (out :S1) // expected-error {{'S1' does not refer to a value}} for (i = 0; i < argc; ++i) foo(); - #pragma omp target parallel for depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} + #pragma omp target parallel for depend(in : argv[1][1] = '2') for (i = 0; i < argc; ++i) foo(); - #pragma omp target parallel for depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target parallel for depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for depend (in : argv[0]) for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for depend (in : ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); - #pragma omp target parallel for depend (in : main) // expected-error {{expected variable name, array element or array section}} + #pragma omp target parallel for depend (in : main) for (i = 0; i < argc; ++i) foo(); - #pragma omp target parallel for depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target parallel for depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} for (i = 0; i < argc; ++i) foo(); diff --git a/clang/test/OpenMP/target_parallel_for_simd_depend_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_depend_messages.cpp index a8b4de7ff75..4375941036c 100644 --- a/clang/test/OpenMP/target_parallel_for_simd_depend_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_simd_depend_messages.cpp @@ -37,21 +37,21 @@ int main(int argc, char **argv, char *env[]) { for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for simd depend (out: ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); - #pragma omp target parallel for simd depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target parallel for simd depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for simd depend (out :S1) // expected-error {{'S1' does not refer to a value}} for (i = 0; i < argc; ++i) foo(); - #pragma omp target parallel for simd depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} + #pragma omp target parallel for simd depend(in : argv[1][1] = '2') for (i = 0; i < argc; ++i) foo(); - #pragma omp target parallel for simd depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target parallel for simd depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for simd depend (in : argv[0]) for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for simd depend (in : ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); - #pragma omp target parallel for simd depend (in : main) // expected-error {{expected variable name, array element or array section}} + #pragma omp target parallel for simd depend (in : main) for (i = 0; i < argc; ++i) foo(); - #pragma omp target parallel for simd depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target parallel for simd depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for simd depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} for (i = 0; i < argc; ++i) foo(); diff --git a/clang/test/OpenMP/target_simd_depend_messages.cpp b/clang/test/OpenMP/target_simd_depend_messages.cpp index 3fc46f4c084..89184f25d7a 100644 --- a/clang/test/OpenMP/target_simd_depend_messages.cpp +++ b/clang/test/OpenMP/target_simd_depend_messages.cpp @@ -37,21 +37,21 @@ int main(int argc, char **argv, char *env[]) { for (i = 0; i < argc; ++i) foo(); #pragma omp target simd depend (out: ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); - #pragma omp target simd depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target simd depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); #pragma omp target simd depend (out :S1) // expected-error {{'S1' does not refer to a value}} for (i = 0; i < argc; ++i) foo(); - #pragma omp target simd depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} + #pragma omp target simd depend(in : argv[1][1] = '2') for (i = 0; i < argc; ++i) foo(); - #pragma omp target simd depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target simd depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target simd depend (in : argv[0]) for (i = 0; i < argc; ++i) foo(); #pragma omp target simd depend (in : ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); - #pragma omp target simd depend (in : main) // expected-error {{expected variable name, array element or array section}} + #pragma omp target simd depend (in : main) for (i = 0; i < argc; ++i) foo(); - #pragma omp target simd depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target simd depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target simd depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} for (i = 0; i < argc; ++i) foo(); diff --git a/clang/test/OpenMP/target_teams_depend_messages.cpp b/clang/test/OpenMP/target_teams_depend_messages.cpp index 9308e897287..57983eec888 100644 --- a/clang/test/OpenMP/target_teams_depend_messages.cpp +++ b/clang/test/OpenMP/target_teams_depend_messages.cpp @@ -36,21 +36,21 @@ int main(int argc, char **argv, char *env[]) { foo(); #pragma omp target teams depend (out: ) // expected-error {{expected expression}} foo(); -#pragma omp target teams depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} +#pragma omp target teams depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} foo(); #pragma omp target teams depend (out :S1) // expected-error {{'S1' does not refer to a value}} foo(); -#pragma omp target teams depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams depend(in : argv[1][1] = '2') foo(); -#pragma omp target teams depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target teams depend (in : argv[0]) foo(); #pragma omp target teams depend (in : ) // expected-error {{expected expression}} foo(); -#pragma omp target teams depend (in : main) // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams depend (in : main) foo(); -#pragma omp target teams depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} +#pragma omp target teams depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} foo(); #pragma omp target teams depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} foo(); diff --git a/clang/test/OpenMP/target_teams_distribute_depend_messages.cpp b/clang/test/OpenMP/target_teams_distribute_depend_messages.cpp index b3e73314107..fbdd49590f8 100644 --- a/clang/test/OpenMP/target_teams_distribute_depend_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_depend_messages.cpp @@ -37,21 +37,21 @@ int main(int argc, char **argv, char *env[]) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute depend (out: ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} +#pragma omp target teams distribute depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute depend (out :S1) // expected-error {{'S1' does not refer to a value}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute depend(in : argv[1][1] = '2') for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute depend (in : argv[0]) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute depend (in : ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute depend (in : main) // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute depend (in : main) for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} +#pragma omp target teams distribute depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} for (i = 0; i < argc; ++i) foo(); diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_depend_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_depend_messages.cpp index ca7241a16c0..c4688958e55 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_depend_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_depend_messages.cpp @@ -37,21 +37,21 @@ int main(int argc, char **argv, char *env[]) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for depend (out: ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute parallel for depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} +#pragma omp target teams distribute parallel for depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for depend (out :S1) // expected-error {{'S1' does not refer to a value}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute parallel for depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute parallel for depend(in : argv[1][1] = '2') for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute parallel for depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute parallel for depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for depend (in : argv[0]) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for depend (in : ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute parallel for depend (in : main) // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute parallel for depend (in : main) for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute parallel for depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} +#pragma omp target teams distribute parallel for depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} for (i = 0; i < argc; ++i) foo(); diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_depend_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_depend_messages.cpp index 2dc9979cdc1..4a9bf01e40b 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_depend_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_depend_messages.cpp @@ -37,21 +37,21 @@ int main(int argc, char **argv, char *env[]) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd depend (out: ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute parallel for simd depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} +#pragma omp target teams distribute parallel for simd depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd depend (out :S1) // expected-error {{'S1' does not refer to a value}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute parallel for simd depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute parallel for simd depend(in : argv[1][1] = '2') for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute parallel for simd depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute parallel for simd depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd depend (in : argv[0]) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd depend (in : ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute parallel for simd depend (in : main) // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute parallel for simd depend (in : main) for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute parallel for simd depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} +#pragma omp target teams distribute parallel for simd depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} for (i = 0; i < argc; ++i) foo(); diff --git a/clang/test/OpenMP/target_teams_distribute_simd_depend_messages.cpp b/clang/test/OpenMP/target_teams_distribute_simd_depend_messages.cpp index 39d12d8d4d0..c24c7438b0b 100644 --- a/clang/test/OpenMP/target_teams_distribute_simd_depend_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_simd_depend_messages.cpp @@ -37,21 +37,21 @@ int main(int argc, char **argv, char *env[]) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd depend (out: ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute simd depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} +#pragma omp target teams distribute simd depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd depend (out :S1) // expected-error {{'S1' does not refer to a value}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute simd depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute simd depend(in : argv[1][1] = '2') for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute simd depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute simd depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd depend (in : argv[0]) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd depend (in : ) // expected-error {{expected expression}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute simd depend (in : main) // expected-error {{expected variable name, array element or array section}} +#pragma omp target teams distribute simd depend (in : main) for (i = 0; i < argc; ++i) foo(); -#pragma omp target teams distribute simd depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} +#pragma omp target teams distribute simd depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} for (i = 0; i < argc; ++i) foo(); diff --git a/clang/test/OpenMP/target_update_depend_messages.cpp b/clang/test/OpenMP/target_update_depend_messages.cpp index 64383a04910..59e159e99fd 100644 --- a/clang/test/OpenMP/target_update_depend_messages.cpp +++ b/clang/test/OpenMP/target_update_depend_messages.cpp @@ -35,14 +35,14 @@ int tmain(T argc, S **argv, R *env[]) { #pragma omp target update to(z) depend(source) // expected-error {{expected expression}} expected-warning {{missing ':' after dependency type - ignoring}} #pragma omp target update to(z) depend(in : argc)) // expected-warning {{extra tokens at the end of '#pragma omp target update' are ignored}} #pragma omp target update to(z) depend(out: ) // expected-error {{expected expression}} - #pragma omp target update to(z) depend(inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target update to(z) depend(inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} #pragma omp target update to(z) depend(out :S1) // expected-error {{'S1' does not refer to a value}} - #pragma omp target update to(z) depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} - #pragma omp target update to(z) depend(in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target update to(z) depend(in : argv[1][1] = '2') // expected-error {{expected addressable lvalue expression, array element or array section}} + #pragma omp target update to(z) depend(in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} #pragma omp target update to(z) depend(in : argv[0]) #pragma omp target update to(z) depend(in : ) // expected-error {{expected expression}} - #pragma omp target update to(z) depend(in : tmain) // expected-error {{expected variable name, array element or array section}} - #pragma omp target update to(z) depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target update to(z) depend(in : tmain) + #pragma omp target update to(z) depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} #pragma omp target update to(z) depend(in : vec[1:2]) // expected-error {{ value is not an array or pointer}} #pragma omp target update to(z) depend(in : argv[ // expected-error {{expected expression}} expected-error {{expected ']'}} expected-error {{expected ')'}} expected-note {{to match this '['}} expected-note {{to match this '('}} #pragma omp target update to(z) depend(in : argv[: // expected-error {{expected expression}} expected-error {{expected ']'}} expected-error {{expected ')'}} expected-note {{to match this '['}} expected-note {{to match this '('}} @@ -83,14 +83,14 @@ int main(int argc, char **argv, char *env[]) { #pragma omp target update to(z) depend(source) // expected-error {{expected expression}} expected-warning {{missing ':' after dependency type - ignoring}} #pragma omp target update to(z) depend(in : argc)) // expected-warning {{extra tokens at the end of '#pragma omp target update' are ignored}} #pragma omp target update to(z) depend(out: ) // expected-error {{expected expression}} - #pragma omp target update to(z) depend(inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp target update to(z) depend(inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} #pragma omp target update to(z) depend(out :S1) // expected-error {{'S1' does not refer to a value}} - #pragma omp target update to(z) depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} - #pragma omp target update to(z) depend(in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp target update to(z) depend(in : argv[1][1] = '2') + #pragma omp target update to(z) depend(in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} #pragma omp target update to(z) depend(in : argv[0]) #pragma omp target update to(z) depend(in : ) // expected-error {{expected expression}} - #pragma omp target update to(z) depend(in : main) // expected-error {{expected variable name, array element or array section}} - #pragma omp target update to(z) depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp target update to(z) depend(in : main) + #pragma omp target update to(z) depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} #pragma omp target update to(z) depend(in : vec[1:2]) // expected-error {{ value is not an array or pointer}} #pragma omp target update to(z) depend(in : argv[ // expected-error {{expected expression}} expected-error {{expected ']'}} expected-error {{expected ')'}} expected-note {{to match this '['}} expected-note {{to match this '('}} #pragma omp target update to(z) depend(in : argv[: // expected-error {{expected expression}} expected-error {{expected ']'}} expected-error {{expected ')'}} expected-note {{to match this '['}} expected-note {{to match this '('}} diff --git a/clang/test/OpenMP/task_depend_messages.cpp b/clang/test/OpenMP/task_depend_messages.cpp index 576738ceac4..1e51b479dd9 100644 --- a/clang/test/OpenMP/task_depend_messages.cpp +++ b/clang/test/OpenMP/task_depend_messages.cpp @@ -28,14 +28,14 @@ int main(int argc, char **argv, char *env[]) { #pragma omp task depend (source) // expected-error {{expected expression}} expected-warning {{missing ':' after dependency type - ignoring}} #pragma omp task depend (in : argc)) // expected-warning {{extra tokens at the end of '#pragma omp task' are ignored}} #pragma omp task depend (out: ) // expected-error {{expected expression}} - #pragma omp task depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} + #pragma omp task depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected addressable lvalue expression, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} #pragma omp task depend (out :S1) // expected-error {{'S1' does not refer to a value}} - #pragma omp task depend(in : argv[1][1] = '2') // expected-error {{expected variable name, array element or array section}} - #pragma omp task depend (in : vec[1]) // expected-error {{expected variable name, array element or array section}} + #pragma omp task depend(in : argv[1][1] = '2') + #pragma omp task depend (in : vec[1]) // expected-error {{expected addressable lvalue expression, array element or array section}} #pragma omp task depend (in : argv[0]) #pragma omp task depend (in : ) // expected-error {{expected expression}} - #pragma omp task depend (in : main) // expected-error {{expected variable name, array element or array section}} - #pragma omp task depend(in : a[0]) // expected-error{{expected variable name, array element or array section}} + #pragma omp task depend (in : main) + #pragma omp task depend(in : a[0]) // expected-error{{expected addressable lvalue expression, array element or array section}} #pragma omp task depend (in : vec[1:2]) // expected-error {{ value is not an array or pointer}} #pragma omp task depend (in : argv[ // expected-error {{expected expression}} expected-error {{expected ']'}} expected-error {{expected ')'}} expected-note {{to match this '['}} expected-note {{to match this '('}} #pragma omp task depend (in : argv[: // expected-error {{expected expression}} expected-error {{expected ']'}} expected-error {{expected ')'}} expected-note {{to match this '['}} expected-note {{to match this '('}} |