]> granicus.if.org Git - clang/commitdiff
[OPENMP] Allow all lvalues in 'depend' clause.
authorAlexey Bataev <a.bataev@hotmail.com>
Thu, 27 Jul 2017 19:15:30 +0000 (19:15 +0000)
committerAlexey Bataev <a.bataev@hotmail.com>
Thu, 27 Jul 2017 19:15:30 +0000 (19:15 +0000)
According to upcoming OpenMP 5.0 all addressable lvalue expressions are
allowed in deoend clause.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@309309 91177308-0d34-0410-b5e6-96231b3b80d8

16 files changed:
include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaOpenMP.cpp
test/OpenMP/target_depend_messages.cpp
test/OpenMP/target_enter_data_depend_messages.cpp
test/OpenMP/target_exit_data_depend_messages.cpp
test/OpenMP/target_parallel_depend_messages.cpp
test/OpenMP/target_parallel_for_depend_messages.cpp
test/OpenMP/target_parallel_for_simd_depend_messages.cpp
test/OpenMP/target_simd_depend_messages.cpp
test/OpenMP/target_teams_depend_messages.cpp
test/OpenMP/target_teams_distribute_depend_messages.cpp
test/OpenMP/target_teams_distribute_parallel_for_depend_messages.cpp
test/OpenMP/target_teams_distribute_parallel_for_simd_depend_messages.cpp
test/OpenMP/target_teams_distribute_simd_depend_messages.cpp
test/OpenMP/target_update_depend_messages.cpp
test/OpenMP/task_depend_messages.cpp

index 15a73aa60ce91107f7fde3a7a14d4abd8338f5b4..34d620af944407051c18179ab3550a6f4355a124 100644 (file)
@@ -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<
index 4f1cd5c245236521a371bcc37bb8689878a35245..72a7daa919c069133d8e5955efd734459f0ea569 100644 (file)
@@ -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;
         }
       }
index 48bd94180c1ea533d8cc21245b3cd536c803e2f5..3eb3af132d8fdbf693922dd2e2b94e5859f2d539 100644 (file)
@@ -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();
index 4aa122355ba5d7cd1ef675371f9f034e5271e60e..77e7039e8e2051542a28cc597d62d1bef6ad3fbb 100644 (file)
@@ -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();
index cdefbeed08bd2eb4ae69bb9bd077f7860c29222e..ce8d237f75e9eba06c3d29d73a21d9df6990c3cb 100644 (file)
@@ -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();
index fde940be1aa42a16cbbfb8092f09958c23f7e9d1..24c69e95cc0a81c21d946f649e99dba8667398f8 100644 (file)
@@ -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();
index cf17d7a5def220f003f45054650a9aaf0bea4afe..19872566161a3a17902059ab39c23ae5ca3316d6 100644 (file)
@@ -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();
index a8b4de7ff755e25b94b8ebef790e436c9f2d2b57..4375941036cf943de87eefb2033fccd33510dcb1 100644 (file)
@@ -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();
index 3fc46f4c08489efeb2264c83a46b02d6642188a7..89184f25d7a1722b578a223fefb34a0c09fa2c31 100644 (file)
@@ -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();
index 9308e8972872139874be380827b89bf5eb560dcd..57983eec8882cd1a418bc5e42ca4be6db9092f8d 100644 (file)
@@ -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();
index b3e7331410701219cb5c68dc936a0325fca6c256..fbdd49590f87f2fc4abd6cf5e6393d40be31cd3a 100644 (file)
@@ -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();
index ca7241a16c0a2b9a11955dfb6d235b28877dc616..c4688958e55453f86098912dbba24da0ff55bf7c 100644 (file)
@@ -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();
index 2dc9979cdc1c0267c01e08f74ba304972ed1103c..4a9bf01e40bf71171d42b0c07a4093629c749f39 100644 (file)
@@ -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();
index 39d12d8d4d0e52ed07777c685d77ca0a3af491f4..c24c7438b0b5f4bc46df0de1d5af169f7896875a 100644 (file)
@@ -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();
index 64383a0491047f1f5771887ecc8d991abc08cbbb..59e159e99fdba662d5204c0d2b833bf6747265eb 100644 (file)
@@ -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 '('}}
index 576738ceac46f81ee19a9ee87b0367e71d01dba4..1e51b479dd96ab3a63082d7eeca9d59d05049578 100644 (file)
@@ -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 '('}}