[clang] db4ea21 - [OpenACC] Change 'not implemented' diagnostic to be more specific

via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 15 12:22:16 PST 2024


Author: erichkeane
Date: 2024-02-15T12:22:11-08:00
New Revision: db4ea21dfde307f4fc873a6fe56791cd7ae3f0a1

URL: https://github.com/llvm/llvm-project/commit/db4ea21dfde307f4fc873a6fe56791cd7ae3f0a1
DIFF: https://github.com/llvm/llvm-project/commit/db4ea21dfde307f4fc873a6fe56791cd7ae3f0a1.diff

LOG: [OpenACC] Change 'not implemented' diagnostic to be more specific

Currently we just emit a generic 'not implemented' diagnostic for all
OpenACC pragmas. This patch moves the diagnostic to 'Sema' and diagnoses
for a specific clause or construct, in preperation of implementing Sema
for constructs.

Added: 
    

Modified: 
    clang/include/clang/Basic/DiagnosticParseKinds.td
    clang/include/clang/Basic/DiagnosticSemaKinds.td
    clang/lib/Parse/ParseOpenACC.cpp
    clang/lib/Sema/SemaOpenACC.cpp
    clang/test/ParserOpenACC/parse-cache-construct.c
    clang/test/ParserOpenACC/parse-cache-construct.cpp
    clang/test/ParserOpenACC/parse-clauses.c
    clang/test/ParserOpenACC/parse-clauses.cpp
    clang/test/ParserOpenACC/parse-constructs.c
    clang/test/ParserOpenACC/parse-constructs.cpp
    clang/test/ParserOpenACC/parse-wait-clause.c
    clang/test/ParserOpenACC/parse-wait-construct.c
    clang/test/ParserOpenACC/unimplemented.c
    clang/test/ParserOpenACC/unimplemented.cpp

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td
index a30ab27566ec3e..11b490a0928e60 100644
--- a/clang/include/clang/Basic/DiagnosticParseKinds.td
+++ b/clang/include/clang/Basic/DiagnosticParseKinds.td
@@ -1355,9 +1355,6 @@ def warn_pragma_acc_ignored
       DefaultIgnore;
 def err_acc_unexpected_directive
     : Error<"unexpected OpenACC directive %select{|'#pragma acc %1'}0">;
-def warn_pragma_acc_unimplemented
-    : Warning<"OpenACC directives not yet implemented, pragma ignored">,
-      InGroup<SourceUsesOpenACC>;
 def err_acc_invalid_directive
     : Error<"invalid OpenACC directive %select{%1|'%1 %2'}0">;
 def err_acc_invalid_clause : Error<"invalid OpenACC clause %0">;

diff  --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 935d94e38cc377..ce619d2996f201 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -12186,4 +12186,15 @@ def err_wasm_builtin_arg_must_match_table_element_type : Error <
   "%ordinal0 argument must match the element type of the WebAssembly table in the %ordinal1 argument">;
 def err_wasm_builtin_arg_must_be_integer_type : Error <
   "%ordinal0 argument must be an integer">;
+
+// OpenACC diagnostics.
+def warn_acc_construct_unimplemented
+    : Warning<"OpenACC construct '%0' not yet implemented, pragma ignored">,
+      InGroup<SourceUsesOpenACC>;
+def warn_acc_clause_unimplemented
+    : Warning<"OpenACC clause '%0' not yet implemented, clause ignored">,
+      InGroup<SourceUsesOpenACC>;
+def err_acc_construct_appertainment
+    : Error<"OpenACC construct '%0' cannot be used here; it can only "
+            "be used in a statement context">;
 } // end of sema component.

diff  --git a/clang/lib/Parse/ParseOpenACC.cpp b/clang/lib/Parse/ParseOpenACC.cpp
index 8157656246873d..10bdd8e9f7448e 100644
--- a/clang/lib/Parse/ParseOpenACC.cpp
+++ b/clang/lib/Parse/ParseOpenACC.cpp
@@ -1182,7 +1182,6 @@ Parser::OpenACCDirectiveParseInfo Parser::ParseOpenACCDirective() {
   // Parses the list of clauses, if present.
   ParseOpenACCClauseList(DirKind);
 
-  Diag(getCurToken(), diag::warn_pragma_acc_unimplemented);
   assert(Tok.is(tok::annot_pragma_openacc_end) &&
          "Didn't parse all OpenACC Clauses");
   SourceLocation EndLoc = ConsumeAnnotationToken();

diff  --git a/clang/lib/Sema/SemaOpenACC.cpp b/clang/lib/Sema/SemaOpenACC.cpp
index dc530845433900..4dc36ce08bd21d 100644
--- a/clang/lib/Sema/SemaOpenACC.cpp
+++ b/clang/lib/Sema/SemaOpenACC.cpp
@@ -11,16 +11,35 @@
 ///
 //===----------------------------------------------------------------------===//
 
+#include "clang/Basic/DiagnosticSema.h"
 #include "clang/Basic/OpenACCKinds.h"
 #include "clang/Sema/Sema.h"
 
 using namespace clang;
 bool Sema::ActOnOpenACCClause(OpenACCClauseKind ClauseKind,
                               SourceLocation StartLoc) {
-  return true;
+  if (ClauseKind == OpenACCClauseKind::Invalid)
+    return false;
+  // For now just diagnose that it is unsupported and leave the parsing to do
+  // whatever it can do. This function will eventually need to start returning
+  // some sort of Clause AST type, but for now just return true/false based on
+  // success.
+  return Diag(StartLoc, diag::warn_acc_clause_unimplemented) << ClauseKind;
 }
 void Sema::ActOnOpenACCConstruct(OpenACCDirectiveKind K,
-                                 SourceLocation StartLoc) {}
+                                 SourceLocation StartLoc) {
+  switch (K) {
+  case OpenACCDirectiveKind::Invalid:
+    // Nothing to do here, an invalid kind has nothing we can check here.  We
+    // want to continue parsing clauses as far as we can, so we will just
+    // ensure that we can still work and don't check any construct-specific
+    // rules anywhere.
+    break;
+  default:
+    Diag(StartLoc, diag::warn_acc_construct_unimplemented) << K;
+    break;
+  }
+}
 
 bool Sema::ActOnStartOpenACCStmtDirective(OpenACCDirectiveKind K,
                                           SourceLocation StartLoc) {

diff  --git a/clang/test/ParserOpenACC/parse-cache-construct.c b/clang/test/ParserOpenACC/parse-cache-construct.c
index 093587f37df4fc..fd161c03c09f75 100644
--- a/clang/test/ParserOpenACC/parse-cache-construct.c
+++ b/clang/test/ParserOpenACC/parse-cache-construct.c
@@ -13,32 +13,32 @@ void func() {
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{expected '('}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +3{{expected '('}}
     // expected-error at +2{{invalid OpenACC clause 'clause'}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache clause list
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache()
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{invalid OpenACC clause 'clause'}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache() clause-list
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +3{{expected ')'}}
     // expected-note at +2{{to match this '('}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(
   }
 
@@ -46,25 +46,25 @@ void func() {
     // expected-error at +4{{use of undeclared identifier 'invalid'}}
     // expected-error at +3{{expected ')'}}
     // expected-note at +2{{to match this '('}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(invalid
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +3{{expected ')'}}
     // expected-note at +2{{to match this '('}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(ArrayPtr
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{use of undeclared identifier 'invalid'}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(invalid)
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(ArrayPtr)
   }
 
@@ -74,7 +74,7 @@ void func() {
     // expected-note at +4{{to match this '['}}
     // expected-error at +3{{expected ')'}}
     // expected-note at +2{{to match this '('}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(ArrayPtr[
   }
 
@@ -82,7 +82,7 @@ void func() {
     // expected-error at +4{{expected expression}}
     // expected-error at +3{{expected ']'}}
     // expected-note at +2{{to match this '['}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(ArrayPtr[, 5)
   }
 
@@ -90,12 +90,12 @@ void func() {
     // expected-error at +4{{expected expression}}
     // expected-error at +3{{expected ']'}}
     // expected-note at +2{{to match this '['}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Array[)
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Array[*readonly])
   }
 
@@ -105,55 +105,55 @@ void func() {
     // expected-note at +4{{to match this '['}}
     // expected-error at +3{{expected ')'}}
     // expected-note at +2{{to match this '('}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Array[*readonly:
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly)
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{invalid tag 'devnum' on 'cache' directive}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(devnum:ArrayPtr)
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{invalid tag 'invalid' on 'cache' directive}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(invalid:ArrayPtr)
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:ArrayPtr)
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{expected expression}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:ArrayPtr[5:])
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:ArrayPtr[5:*readonly])
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:ArrayPtr[5:*readonly], Array)
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:ArrayPtr[5:*readonly], Array[*readonly:3])
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:ArrayPtr[5 + i:*readonly], Array[*readonly + i:3])
   }
 
@@ -161,36 +161,36 @@ void func() {
     // expected-error at +4{{expected expression}}
     // expected-error at +3{{expected ')'}}
     // expected-note at +2{{to match this '('}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:ArrayPtr[5:*readonly],
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{expected expression}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:ArrayPtr[5:*readonly],)
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-warning at +2{{left operand of comma operator has no effect}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:ArrayPtr[5,6:*readonly])
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-warning at +2{{left operand of comma operator has no effect}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:ArrayPtr[5:3, *readonly], ArrayPtr[0])
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:s.foo)
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-warning at +2{{left operand of comma operator has no effect}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(readonly:s.Array[1,2])
   }
 }

diff  --git a/clang/test/ParserOpenACC/parse-cache-construct.cpp b/clang/test/ParserOpenACC/parse-cache-construct.cpp
index affe43d4b0f0ba..f0a35824696d8c 100644
--- a/clang/test/ParserOpenACC/parse-cache-construct.cpp
+++ b/clang/test/ParserOpenACC/parse-cache-construct.cpp
@@ -9,34 +9,34 @@ template<typename T, int I>
 void func() {
   char *ArrayPtr = getArrayPtr();
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(ArrayPtr[T::value + I:I + 5], T::array[(i + T::value, 5): 6])
   }
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(NS::NSArray[NS::NSInt])
   }
 
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(NS::NSArray[NS::NSInt : NS::NSInt])
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{use of undeclared identifier 'NSArray'; did you mean 'NS::NSArray'}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(NSArray[NS::NSInt : NS::NSInt])
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{use of undeclared identifier 'NSInt'; did you mean 'NS::NSInt'}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(NS::NSArray[NSInt : NS::NSInt])
   }
 
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{use of undeclared identifier 'NSInt'; did you mean 'NS::NSInt'}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(NS::NSArray[NS::NSInt : NSInt])
   }
 }
@@ -59,56 +59,56 @@ void use() {
 
   Members s;
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(s.array[s.value])
   }
   HasMembersArray Arrs;
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Arrs.MemArr[3].array[4])
   }
   for (int i = 0; i < 10; ++i) {
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Arrs.MemArr[3].array[1:4])
   }
   for (int i = 0; i < 10; ++i) {
     // FIXME: Once we have a new array-section type to represent OpenACC as
     // well, change this error message.
     // expected-error at +2{{OpenMP array section is not allowed here}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Arrs.MemArr[3:4].array[1:4])
   }
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{OpenMP array section is not allowed here}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Arrs.MemArr[3:4].array[4])
   }
   for (int i = 0; i < 10; ++i) {
     // expected-error at +3{{expected ']'}}
     // expected-note at +2{{to match this '['}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Arrs.MemArr[3:4:].array[4])
   }
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{expected expression}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Arrs.MemArr[:].array[4])
   }
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{expected unqualified-id}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Arrs.MemArr[::].array[4])
   }
   for (int i = 0; i < 10; ++i) {
     // expected-error at +4{{expected expression}}
     // expected-error at +3{{expected ']'}}
     // expected-note at +2{{to match this '['}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Arrs.MemArr[: :].array[4])
   }
   for (int i = 0; i < 10; ++i) {
     // expected-error at +2{{expected expression}}
-    // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    // expected-warning at +1{{OpenACC construct 'cache' not yet implemented, pragma ignored}}
     #pragma acc cache(Arrs.MemArr[3:].array[4])
   }
   func<S, 5>();

diff  --git a/clang/test/ParserOpenACC/parse-clauses.c b/clang/test/ParserOpenACC/parse-clauses.c
index 18eb0fc996cceb..3468e160a39cbe 100644
--- a/clang/test/ParserOpenACC/parse-clauses.c
+++ b/clang/test/ParserOpenACC/parse-clauses.c
@@ -4,371 +4,467 @@
 
 void func() {
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'finalize' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'enter data' not yet implemented, pragma ignored}}
 #pragma acc enter data finalize
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'finalize' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'finalize' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'enter data' not yet implemented, pragma ignored}}
 #pragma acc enter data finalize finalize
 
+  // expected-warning at +3{{OpenACC clause 'finalize' not yet implemented, clause ignored}}
   // expected-error at +2{{invalid OpenACC clause 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'enter data' not yet implemented, pragma ignored}}
 #pragma acc enter data finalize invalid
 
+  // expected-warning at +3{{OpenACC clause 'finalize' not yet implemented, clause ignored}}
   // expected-error at +2{{invalid OpenACC clause 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'enter data' not yet implemented, pragma ignored}}
 #pragma acc enter data finalize invalid invalid finalize
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'finalize' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'enter data' not yet implemented, pragma ignored}}
 #pragma acc enter data seq finalize
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'if_present' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'host_data' not yet implemented, pragma ignored}}
 #pragma acc host_data if_present
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'if_present' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'if_present' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'host_data' not yet implemented, pragma ignored}}
 #pragma acc host_data if_present, if_present
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +4{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +3{{OpenACC clause 'independent' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'auto' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop seq independent auto
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +4{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +3{{OpenACC clause 'independent' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'auto' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop seq, independent auto
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +4{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +3{{OpenACC clause 'independent' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'auto' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop seq independent, auto
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +4{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +3{{OpenACC clause 'independent' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'auto' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'kernels loop' not yet implemented, pragma ignored}}
 #pragma acc kernels loop seq independent auto
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +4{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +3{{OpenACC clause 'independent' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'auto' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop seq, independent auto
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +4{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +3{{OpenACC clause 'independent' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'auto' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel loop' not yet implemented, pragma ignored}}
 #pragma acc parallel loop seq independent, auto
+  {}
 
 
   // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop , seq
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop seq,
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'collapse' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop collapse
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'collapse' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop collapse()
   for(;;){}
 
-  // expected-error at +3{{invalid tag 'unknown' on 'collapse' clause}}
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'unknown' on 'collapse' clause}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'collapse' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop collapse(unknown:)
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'collapse' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop collapse(force:)
   for(;;){}
 
-  // expected-error at +2{{invalid tag 'unknown' on 'collapse' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid tag 'unknown' on 'collapse' clause}}
+  // expected-warning at +2{{OpenACC clause 'collapse' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop collapse(unknown:5)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'collapse' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop collapse(force:5)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'collapse' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop collapse(5)
   for(;;){}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'collapse' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop collapse(5, 6)
   for(;;){}
 }
 
 void DefaultClause() {
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop default
   for(;;){}
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default seq
   for(;;){}
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected '('}}
+  // expected-warning at +3{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default, seq
   for(;;){}
 
-  // expected-error at +4{{expected identifier}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected identifier}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default(
   for(;;){}
 
-  // expected-error at +4{{invalid value for 'default' clause; expected 'present' or 'none'}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{invalid value for 'default' clause; expected 'present' or 'none'}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default( seq
   for(;;){}
 
-  // expected-error at +4{{expected identifier}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected identifier}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default(, seq
   for(;;){}
 
-  // expected-error at +3{{expected '('}}
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected '('}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default)
   for(;;){}
 
-  // expected-error at +3{{expected '('}}
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
-#pragma acc serial default) seq
-  for(;;){}
-
-  // expected-error at +3{{expected '('}}
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected '('}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default), seq
   for(;;){}
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default()
   for(;;){}
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected identifier}}
+  // expected-warning at +3{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default() seq
   for(;;){}
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected identifier}}
+  // expected-warning at +3{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default(), seq
   for(;;){}
 
-  // expected-error at +2{{invalid value for 'default' clause; expected 'present' or 'none'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid value for 'default' clause; expected 'present' or 'none'}}
+  // expected-warning at +2{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default(invalid)
   for(;;){}
 
-  // expected-error at +2{{invalid value for 'default' clause; expected 'present' or 'none'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid value for 'default' clause; expected 'present' or 'none'}}
+  // expected-warning at +3{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default(auto) seq
   for(;;){}
 
-  // expected-error at +2{{invalid value for 'default' clause; expected 'present' or 'none'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid value for 'default' clause; expected 'present' or 'none'}}
+  // expected-warning at +3{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default(invalid), seq
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default(none)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'default' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial default(present), seq
   for(;;){}
 }
 
 void IfClause() {
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop if
   for(;;){}
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if seq
   for(;;){}
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected '('}}
+  // expected-warning at +3{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if, seq
   for(;;){}
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if(
   for(;;){}
 
-  // expected-error at +4{{use of undeclared identifier 'seq'}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{use of undeclared identifier 'seq'}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if( seq
   for(;;){}
 
-  // expected-error at +5{{expected expression}}
-  // expected-error at +4{{use of undeclared identifier 'seq'}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +6{{expected expression}}
+  // expected-error at +5{{use of undeclared identifier 'seq'}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if(, seq
   for(;;){}
 
-  // expected-error at +3{{expected '('}}
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected '('}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if)
   for(;;){}
 
-  // expected-error at +3{{expected '('}}
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected '('}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if) seq
   for(;;){}
 
-  // expected-error at +3{{expected '('}}
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected '('}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if), seq
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if()
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected expression}}
+  // expected-warning at +3{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if() seq
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected expression}}
+  // expected-warning at +3{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if(), seq
   for(;;){}
 
-  // expected-error at +2{{use of undeclared identifier 'invalid_expr'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{use of undeclared identifier 'invalid_expr'}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if(invalid_expr)
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected expression}}
+  // expected-warning at +3{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if() seq
   for(;;){}
 
   int i, j;
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if(i > j)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'if' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial if(1+5>3), seq
   for(;;){}
 }
 
-void SyncClause() {
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+void SelfClause() {
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self, seq
   for(;;){}
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self(
   for(;;){}
 
-  // expected-error at +4{{use of undeclared identifier 'seq'}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{use of undeclared identifier 'seq'}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self( seq
   for(;;){}
 
-  // expected-error at +5{{expected expression}}
-  // expected-error at +4{{use of undeclared identifier 'seq'}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +6{{expected expression}}
+  // expected-error at +5{{use of undeclared identifier 'seq'}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self(, seq
   for(;;){}
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self)
   for(;;){}
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self) seq
   for(;;){}
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self), seq
   for(;;){}
 
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected expression}}
+  // expected-warning at +3{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self(), seq
   for(;;){}
 
-  // expected-error at +3{{expected expression}}
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected expression}}
+  // expected-warning at +3{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self(,), seq
   for(;;){}
 
-  // expected-error at +2{{use of undeclared identifier 'invalid_expr'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{use of undeclared identifier 'invalid_expr'}}
+  // expected-warning at +3{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop self(invalid_expr), seq
   for(;;){}
 
   int i, j;
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial self(i > j
   for(;;){}
 
-  // expected-error at +4{{use of undeclared identifier 'seq'}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{use of undeclared identifier 'seq'}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial self(i > j, seq
   for(;;){}
 
-  // expected-warning at +2{{left operand of comma operator has no effect}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{left operand of comma operator has no effect}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial self(i, j)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial self(i > j)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial self(1+5>3), seq
   for(;;){}
 }
@@ -385,926 +481,1288 @@ struct HasMembersArray {
 void SelfUpdate() {
   struct Members s;
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'update' not yet implemented, pragma ignored}}
 #pragma acc update self
   for(;;){}
 
-  // expected-error at +2{{use of undeclared identifier 'zero'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{use of undeclared identifier 'zero'}}
+  // expected-warning at +3{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'update' not yet implemented, pragma ignored}}
 #pragma acc update self(zero : s.array[s.value : 5], s.value), seq
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'self' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'update' not yet implemented, pragma ignored}}
 #pragma acc update self(s.array[s.value : 5], s.value), seq
   for(;;){}
 }
 
 void VarListClauses() {
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected '('}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy, seq
 
-  // expected-error at +3{{expected '('}}
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected '('}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy)
 
-  // expected-error at +3{{expected '('}}
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected '('}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy), seq
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(, seq
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy()
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected expression}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(), seq
 
   struct Members s;
   struct HasMembersArray HasMem;
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(s.array[s.value]), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(s.array[s.value], s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(HasMem.MemArr[3].array[1]), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(HasMem.MemArr[3].array[1:4]), seq
 
-  // expected-error at +2{{OpenMP array section is not allowed here}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{OpenMP array section is not allowed here}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(HasMem.MemArr[1:3].array[1]), seq
 
-  // expected-error at +2{{OpenMP array section is not allowed here}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{OpenMP array section is not allowed here}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(HasMem.MemArr[1:3].array[1:2]), seq
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected expression}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(HasMem.MemArr[:]), seq
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected expression}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(HasMem.MemArr[::]), seq
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ']'}}
-  // expected-note at +2{{to match this '['}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +6{{expected expression}}
+  // expected-error at +5{{expected ']'}}
+  // expected-note at +4{{to match this '['}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(HasMem.MemArr[: :]), seq
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected expression}}
+  // expected-warning at +3{{OpenACC clause 'copy' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copy(HasMem.MemArr[3:]), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'use_device' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial use_device(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'use_device' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial use_device(s.array[s.value : 5]), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'no_create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial no_create(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'no_create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial no_create(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'present' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial present(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'present' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial present(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'deviceptr' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial deviceptr(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'deviceptr' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial deviceptr(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'attach' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial attach(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'attach' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial attach(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'detach' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial detach(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'detach' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial detach(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'private' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial private(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'private' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial private(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'firstprivate' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial firstprivate(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'firstprivate' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial firstprivate(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'delete' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial delete(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'delete' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial delete(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'use_device' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial use_device(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'use_device' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial use_device(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'device_resident' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial device_resident(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'device_resident' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial device_resident(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'link' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial link(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'link' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial link(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'host' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial host(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'host' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial host(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'device' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial device(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'device' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial device(s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'copyout' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyout(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'copyout' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyout(s.array[s.value : 5], s.value), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'copyout' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyout(zero:s.array[s.value : 5], s.value), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'copyout' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyout(zero : s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{use of undeclared identifier 'zero'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{use of undeclared identifier 'zero'}}
+  // expected-warning at +3{{OpenACC clause 'copyout' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyout(zero s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{invalid tag 'readonly' on 'copyout' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'readonly' on 'copyout' clause}}
+  // expected-warning at +3{{OpenACC clause 'copyout' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyout(readonly:s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{invalid tag 'invalid' on 'copyout' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'invalid' on 'copyout' clause}}
+  // expected-warning at +3{{OpenACC clause 'copyout' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyout(invalid:s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{invalid tag 'invalid' on 'copyout' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'invalid' on 'copyout' clause}}
+  // expected-warning at +3{{OpenACC clause 'copyout' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyout(invalid:s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{use of undeclared identifier 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{use of undeclared identifier 'invalid'}}
+  // expected-warning at +3{{OpenACC clause 'copyout' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyout(invalid s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial create(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial create(s.array[s.value : 5], s.value), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial create(zero:s.array[s.value : 5], s.value), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial create(zero : s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{use of undeclared identifier 'zero'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{use of undeclared identifier 'zero'}}
+  // expected-warning at +3{{OpenACC clause 'create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial create(zero s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{invalid tag 'readonly' on 'create' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'readonly' on 'create' clause}}
+  // expected-warning at +3{{OpenACC clause 'create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial create(readonly:s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{invalid tag 'invalid' on 'create' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'invalid' on 'create' clause}}
+  // expected-warning at +3{{OpenACC clause 'create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial create(invalid:s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{invalid tag 'invalid' on 'create' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'invalid' on 'create' clause}}
+  // expected-warning at +3{{OpenACC clause 'create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial create(invalid:s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{use of undeclared identifier 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{use of undeclared identifier 'invalid'}}
+  // expected-warning at +3{{OpenACC clause 'create' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial create(invalid s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{expected ','}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ','}}
+  // expected-warning at +3{{OpenACC clause 'copyin' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyin(s.array[s.value] s.array[s.value :5] ), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'copyin' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyin(s.array[s.value : 5], s.value), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'copyin' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyin(readonly:s.array[s.value : 5], s.value), seq
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'copyin' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyin(readonly : s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{use of undeclared identifier 'readonly'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{use of undeclared identifier 'readonly'}}
+  // expected-warning at +3{{OpenACC clause 'copyin' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyin(readonly s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{invalid tag 'zero' on 'copyin' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'zero' on 'copyin' clause}}
+  // expected-warning at +3{{OpenACC clause 'copyin' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyin(zero :s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{invalid tag 'invalid' on 'copyin' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'invalid' on 'copyin' clause}}
+  // expected-warning at +3{{OpenACC clause 'copyin' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyin(invalid:s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{invalid tag 'invalid' on 'copyin' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'invalid' on 'copyin' clause}}
+  // expected-warning at +3{{OpenACC clause 'copyin' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyin(invalid:s.array[s.value : 5], s.value), seq
 
-  // expected-error at +2{{use of undeclared identifier 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{use of undeclared identifier 'invalid'}}
+  // expected-warning at +3{{OpenACC clause 'copyin' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial copyin(invalid s.array[s.value : 5], s.value), seq
 }
 
 void ReductionClauseParsing() {
   char *Begin, *End;
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction
-  // expected-error at +3{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction()
-  // expected-error at +2{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(Begin)
-  // expected-error at +2{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(Begin, End)
-  // expected-error at +2{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(Begin, End)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(+:Begin)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(+:Begin, End)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(*: Begin, End)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(max : Begin, End)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(min: Begin, End)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(&: Begin, End)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(|: Begin, End)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(^: Begin, End)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial seq, reduction(&&: Begin, End)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'reduction' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial reduction(||: Begin, End), seq
 }
 
 int returns_int();
 
 void IntExprParsing() {
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'vector_length' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel vector_length
+  {}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'vector_length' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel vector_length()
+  {}
 
-  // expected-error at +2{{use of undeclared identifier 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{use of undeclared identifier 'invalid'}}
+  // expected-warning at +2{{OpenACC clause 'vector_length' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel vector_length(invalid)
+  {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'vector_length' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel vector_length(5, 4)
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'vector_length' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel vector_length(5)
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'vector_length' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel vector_length(returns_int())
+  {}
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'num_gangs' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_gangs
+  {}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'num_gangs' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_gangs()
+  {}
 
-  // expected-error at +2{{use of undeclared identifier 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{use of undeclared identifier 'invalid'}}
+  // expected-warning at +2{{OpenACC clause 'num_gangs' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_gangs(invalid)
+  {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'num_gangs' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_gangs(5, 4)
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'num_gangs' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_gangs(5)
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'num_gangs' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_gangs(returns_int())
+  {}
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'num_workers' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_workers
+  {}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'num_workers' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_workers()
+  {}
 
-  // expected-error at +2{{use of undeclared identifier 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{use of undeclared identifier 'invalid'}}
+  // expected-warning at +2{{OpenACC clause 'num_workers' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_workers(invalid)
+  {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'num_workers' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_workers(5, 4)
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'num_workers' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_workers(5)
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'num_workers' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel num_workers(returns_int())
+  {}
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'device_num' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'init' not yet implemented, pragma ignored}}
 #pragma acc init device_num
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'device_num' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'init' not yet implemented, pragma ignored}}
 #pragma acc init device_num()
 
-  // expected-error at +2{{use of undeclared identifier 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{use of undeclared identifier 'invalid'}}
+  // expected-warning at +2{{OpenACC clause 'device_num' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'init' not yet implemented, pragma ignored}}
 #pragma acc init device_num(invalid)
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'device_num' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'init' not yet implemented, pragma ignored}}
 #pragma acc init device_num(5, 4)
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'device_num' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'init' not yet implemented, pragma ignored}}
 #pragma acc init device_num(5)
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'device_num' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'init' not yet implemented, pragma ignored}}
 #pragma acc init device_num(returns_int())
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'default_async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'set' not yet implemented, pragma ignored}}
 #pragma acc set default_async
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'default_async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'set' not yet implemented, pragma ignored}}
 #pragma acc set default_async()
 
-  // expected-error at +2{{use of undeclared identifier 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{use of undeclared identifier 'invalid'}}
+  // expected-warning at +2{{OpenACC clause 'default_async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'set' not yet implemented, pragma ignored}}
 #pragma acc set default_async(invalid)
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'default_async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'set' not yet implemented, pragma ignored}}
 #pragma acc set default_async(5, 4)
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'default_async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'set' not yet implemented, pragma ignored}}
 #pragma acc set default_async(5)
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'default_async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'set' not yet implemented, pragma ignored}}
 #pragma acc set default_async(returns_int())
 
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector()
-  // expected-error at +3{{invalid tag 'invalid' on 'vector' clause}}
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'invalid' on 'vector' clause}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(invalid:)
-  // expected-error at +2{{invalid tag 'invalid' on 'vector' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid tag 'invalid' on 'vector' clause}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(invalid:5)
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(length:)
-  // expected-error at +3{{invalid tag 'num' on 'vector' clause}}
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'num' on 'vector' clause}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(num:)
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(5, 4)
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(length:6,4)
-  // expected-error at +4{{invalid tag 'num' on 'vector' clause}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{invalid tag 'num' on 'vector' clause}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(num:6,4)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(5)
-  // expected-error at +2{{invalid tag 'num' on 'vector' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid tag 'num' on 'vector' clause}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(num:5)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(length:5)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(returns_int())
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop vector(length:returns_int())
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker()
-  // expected-error at +3{{invalid tag 'invalid' on 'worker' clause}}
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'invalid' on 'worker' clause}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(invalid:)
-  // expected-error at +2{{invalid tag 'invalid' on 'worker' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid tag 'invalid' on 'worker' clause}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(invalid:5)
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(num:)
-  // expected-error at +3{{invalid tag 'length' on 'worker' clause}}
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{invalid tag 'length' on 'worker' clause}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(length:)
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(5, 4)
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(num:6,4)
-  // expected-error at +4{{invalid tag 'length' on 'worker' clause}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{invalid tag 'length' on 'worker' clause}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(length:6,4)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(5)
-  // expected-error at +2{{invalid tag 'length' on 'worker' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid tag 'length' on 'worker' clause}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(length:5)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(num:5)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(returns_int())
-  // expected-error at +2{{invalid tag 'length' on 'worker' clause}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid tag 'length' on 'worker' clause}}
+  // expected-warning at +2{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop worker(length:returns_int())
 }
 
 void device_type() {
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype
+  {}
 
-  // expected-error at +4{{expected identifier}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected identifier}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(
-  // expected-error at +4{{expected identifier}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    {}
+  // expected-error at +5{{expected identifier}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(
+  {}
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type()
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype()
+  {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(*
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(*
+  {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(ident
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(ident
+  {}
 
-  // expected-error at +4{{expected ','}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected ','}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(ident ident2
-  // expected-error at +4{{expected ','}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +5{{expected ','}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(ident ident2
+  {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(ident, ident2
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(ident, ident2
+  {}
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(ident, ident2,)
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(ident, ident2,)
+  {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(*,)
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(*,)
+  {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(*,ident)
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(*,ident)
+  {}
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(ident, *)
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(ident, *)
+  {}
 
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type("foo", 54)
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-error at +3{{expected identifier}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(31, "bar")
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(ident, auto, int, float)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  {}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel dtype(ident, auto, int, float)
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{OpenACC clause 'device_type' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'dtype' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel device_type(ident, auto, int, float) dtype(ident, auto, int, float)
+  {}
 }
 
 #define acc_async_sync -1
 void AsyncArgument() {
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel async
+  {}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel async()
+  {}
 
-  // expected-error at +2{{use of undeclared identifier 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{use of undeclared identifier 'invalid'}}
+  // expected-warning at +2{{OpenACC clause 'async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel async(invalid)
+  {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel async(4, 3)
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel async(returns_int())
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel async(5)
+  {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel async(acc_async_sync)
+  {}
 }
 
 void Tile() {
 
   int* Foo;
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile
   for(;;){}
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(
   for(;;){}
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile()
   for(;;){}
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(,
   for(;;){}
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(,)
   for(;;){}
-  // expected-error at +2{{use of undeclared identifier 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{use of undeclared identifier 'invalid'}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(returns_int(), *, invalid, *)
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(returns_int() *, Foo, *)
   for(;;){}
 
-  // expected-error at +2{{indirection requires pointer operand ('int' invalid)}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{indirection requires pointer operand ('int' invalid)}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(* returns_int() , *)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(*)
   for(;;){}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(*Foo, *Foo)
   for(;;){}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(5)
   for(;;){}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(*, 5)
   for(;;){}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(5, *)
   for(;;){}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'tile' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop tile(5, *, 3, *)
   for(;;){}
 }
 
 void Gang() {
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang
   for(;;){}
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(
   for(;;){}
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang()
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(5, *)
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(*)
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(5, num:*)
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(num:5, *)
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(num:5, num:*)
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(num:*)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(dim:5)
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(dim:5, dim:*)
   for(;;){}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(dim:*)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(static:*)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(static:*, static:5)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(static:*, 5)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(static:45, 5)
   for(;;){}
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(static:45,
   for(;;){}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(static:45
   for(;;){}
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(static:*,
   for(;;){}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(static:*
   for(;;){}
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(45,
   for(;;){}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(45
   for(;;){}
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(num:45,
   for(;;){}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(num:45
   for(;;){}
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(dim:45,
   for(;;){}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(dim:45
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(static:*, dim:returns_int(), 5)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'gang' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop gang(num: 32, static:*, dim:returns_int(), 5)
   for(;;){}
 
 }
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +5{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +4{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +3{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'nohost' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine worker, vector, seq, nohost
 void bar();
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +5{{OpenACC clause 'worker' not yet implemented, clause ignored}}
+  // expected-warning at +4{{OpenACC clause 'vector' not yet implemented, clause ignored}}
+  // expected-warning at +3{{OpenACC clause 'seq' not yet implemented, clause ignored}}
+  // expected-warning at +2{{OpenACC clause 'nohost' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(bar) worker, vector, seq, nohost
 
 
 // Bind Clause Parsing.
 
-  // expected-error at +2{{expected '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected '('}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine bind
 void BCP1();
 
-  // expected-error at +2{{expected identifier or string literal}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected identifier or string literal}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(BCP1) bind()
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine bind("ReductionClauseParsing")
 void BCP2();
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(BCP1) bind(BCP2)
 
-  // expected-error at +2{{use of undeclared identifier 'unknown_thing'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{use of undeclared identifier 'unknown_thing'}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(BCP1) bind(unknown_thing)

diff  --git a/clang/test/ParserOpenACC/parse-clauses.cpp b/clang/test/ParserOpenACC/parse-clauses.cpp
index 322080c3c35bcc..e524f73d8fdbac 100644
--- a/clang/test/ParserOpenACC/parse-clauses.cpp
+++ b/clang/test/ParserOpenACC/parse-clauses.cpp
@@ -2,27 +2,33 @@
 
 template<unsigned I, typename T>
 void templ() {
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'collapse' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop collapse(I)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'collapse' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop collapse(T::value)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'vector_length' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel vector_length(T::value)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'vector_length' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel vector_length(I)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel async(T::value)
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'async' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel async(I)
   for(;;){}
 }
@@ -51,39 +57,51 @@ void function();
 }
 
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(NS::NSFunc)
-  // expected-error at +3{{'RecordTy' does not refer to a value}}
+  // expected-error at +4{{'RecordTy' does not refer to a value}}
   // expected-note@#RecTy{{declared here}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(NS::RecordTy)
-  // expected-error at +3{{'Value' is a private member of 'NS::RecordTy'}}
+  // expected-error at +4{{'Value' is a private member of 'NS::RecordTy'}}
   // expected-note@#VAL{{implicitly declared private here}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(NS::RecordTy::Value)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(NS::RecordTy::ValuePub)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(NS::TemplTy<int>)
-  // expected-error at +2{{no member named 'unknown' in namespace 'NS'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{no member named 'unknown' in namespace 'NS'}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(NS::unknown<int>)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(NS::function)
-  // expected-error at +3{{'priv_mem_function' is a private member of 'NS::RecordTy'}}
+  // expected-error at +4{{'priv_mem_function' is a private member of 'NS::RecordTy'}}
   // expected-note@#PrivMemFun{{implicitly declared private here}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(NS::RecordTy::priv_mem_function)
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(NS::RecordTy::mem_function)
 
-  // expected-error at +2{{string literal with user-defined suffix cannot be used here}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{string literal with user-defined suffix cannot be used here}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind("unknown udl"_UDL)
 
-  // expected-warning at +2{{encoding prefix 'u' on an unevaluated string literal has no effect}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{encoding prefix 'u' on an unevaluated string literal has no effect}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(u"16 bits")
-  // expected-warning at +2{{encoding prefix 'U' on an unevaluated string literal has no effect}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +3{{encoding prefix 'U' on an unevaluated string literal has no effect}}
+  // expected-warning at +2{{OpenACC clause 'bind' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(use) bind(U"32 bits")

diff  --git a/clang/test/ParserOpenACC/parse-constructs.c b/clang/test/ParserOpenACC/parse-constructs.c
index 0bb33269bbe98f..213b298df08a82 100644
--- a/clang/test/ParserOpenACC/parse-constructs.c
+++ b/clang/test/ParserOpenACC/parse-constructs.c
@@ -2,194 +2,201 @@
 
 void func() {
 
-  // expected-error at +2{{expected OpenACC directive}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +1{{expected OpenACC directive}}
 #pragma acc
   for(;;){}
 
-  // expected-error at +3{{expected OpenACC directive}}
-  // expected-error at +2{{invalid OpenACC clause 'whatever'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +2{{expected OpenACC directive}}
+  // expected-error at +1{{invalid OpenACC clause 'whatever'}}
 #pragma acc(whatever) routine
 
-  // expected-error at +3{{expected OpenACC directive}}
-  // expected-error at +2{{invalid OpenACC clause 'routine'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +2{{expected OpenACC directive}}
+  // expected-error at +1{{invalid OpenACC clause 'routine'}}
 #pragma acc) routine
 
-  // expected-error at +2{{invalid OpenACC directive 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +1{{invalid OpenACC directive 'invalid'}}
 #pragma acc invalid
   for(;;){}
 
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel clause list
   for(;;){}
   // expected-error at +3{{expected clause-list or newline in OpenACC directive}}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel() clause list
   for(;;){}
   // expected-error at +4{{expected clause-list or newline in OpenACC directive}}
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel( clause list
+  for(;;){}
+  // expected-error at +3{{expected clause-list or newline in OpenACC directive}}
+  // expected-error at +2{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
+#pragma acc serial() clause list
+  for(;;){}
+  // expected-error at +4{{expected clause-list or newline in OpenACC directive}}
+  // expected-error at +3{{expected ')'}}
+  // expected-note at +2{{to match this '('}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
+#pragma acc serial( clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
 #pragma acc serial clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'kernels' not yet implemented, pragma ignored}}
 #pragma acc kernels clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'data' not yet implemented, pragma ignored}}
 #pragma acc data clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'enter data' not yet implemented, pragma ignored}}
 #pragma acc enter data clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'exit data' not yet implemented, pragma ignored}}
 #pragma acc exit data clause list
   for(;;){}
-  // expected-error at +2{{invalid OpenACC directive 'enter invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +1{{invalid OpenACC directive 'enter invalid'}}
 #pragma acc enter invalid
   for(;;){}
-  // expected-error at +2{{invalid OpenACC directive 'exit invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +1{{invalid OpenACC directive 'exit invalid'}}
 #pragma acc exit invalid
   for(;;){}
-  // expected-error at +2{{invalid OpenACC directive 'enter'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +1{{invalid OpenACC directive 'enter'}}
 #pragma acc enter
   for(;;){}
-  // expected-error at +2{{expected identifier}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +1{{expected identifier}}
 #pragma acc exit }
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'host_data' not yet implemented, pragma ignored}}
 #pragma acc host_data clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'loop' not yet implemented, pragma ignored}}
 #pragma acc loop clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'invalid'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
 #pragma acc parallel invalid clause list
+  for(;;){}
+  // expected-error at +2{{invalid OpenACC clause 'invalid'}}
+  // expected-warning at +1{{OpenACC construct 'serial' not yet implemented, pragma ignored}}
+#pragma acc serial invalid clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel loop' not yet implemented, pragma ignored}}
 #pragma acc parallel loop clause list
   for(;;){}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel loop' not yet implemented, pragma ignored}}
 #pragma acc parallel loop
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop clause list
   for(;;){}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'serial loop' not yet implemented, pragma ignored}}
 #pragma acc serial loop
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'kernels loop' not yet implemented, pragma ignored}}
 #pragma acc kernels loop clause list
   for(;;){}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'kernels loop' not yet implemented, pragma ignored}}
 #pragma acc kernels loop
   for(;;){}
 
   int i = 0, j = 0, k = 0;
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'atomic' not yet implemented, pragma ignored}}
 #pragma acc atomic
   i = j;
   // expected-error at +2{{invalid OpenACC clause 'garbage'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'atomic' not yet implemented, pragma ignored}}
 #pragma acc atomic garbage
   i = j;
   // expected-error at +2{{invalid OpenACC clause 'garbage'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'atomic' not yet implemented, pragma ignored}}
 #pragma acc atomic garbage clause list
   i = j;
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'atomic' not yet implemented, pragma ignored}}
 #pragma acc atomic read
   i = j;
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'atomic' not yet implemented, pragma ignored}}
 #pragma acc atomic write clause list
   i = i + j;
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'atomic' not yet implemented, pragma ignored}}
 #pragma acc atomic update clause list
   i++;
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'atomic' not yet implemented, pragma ignored}}
 #pragma acc atomic capture clause list
   i = j++;
 
 
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'declare' not yet implemented, pragma ignored}}
 #pragma acc declare clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'init' not yet implemented, pragma ignored}}
 #pragma acc init clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'shutdown' not yet implemented, pragma ignored}}
 #pragma acc shutdown clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'set' not yet implemented, pragma ignored}}
 #pragma acc set clause list
   for(;;){}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'update' not yet implemented, pragma ignored}}
 #pragma acc update clause list
   for(;;){}
 }
 
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine
 void routine_func();
 // expected-error at +2{{invalid OpenACC clause 'clause'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine clause list
 void routine_func();
 
 // expected-error at +2{{use of undeclared identifier 'func_name'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine (func_name)
 // expected-error at +3{{use of undeclared identifier 'func_name'}}
 // expected-error at +2{{invalid OpenACC clause 'clause'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine (func_name) clause list
 
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine (routine_func)
 // expected-error at +2{{invalid OpenACC clause 'clause'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine (routine_func) clause list
 
 // expected-error at +3{{expected ')'}}
 // expected-note at +2{{to match this '('}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine (routine_func())
 
 // expected-error at +2{{expected identifier}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine()
 
 // expected-error at +2{{expected identifier}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(int)

diff  --git a/clang/test/ParserOpenACC/parse-constructs.cpp b/clang/test/ParserOpenACC/parse-constructs.cpp
index abeddd357619e0..42fd09d6977ddc 100644
--- a/clang/test/ParserOpenACC/parse-constructs.cpp
+++ b/clang/test/ParserOpenACC/parse-constructs.cpp
@@ -14,50 +14,50 @@ namespace NS {
 }
 
 // expected-error at +2{{use of undeclared identifier 'foo'; did you mean 'NS::foo'?}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(foo)
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(NS::foo)
 
 // expected-error at +2{{use of undeclared identifier 'templ'; did you mean 'NS::templ'?}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(templ)
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(NS::templ)
 
 // expected-error at +2{{use of undeclared identifier 'templ'; did you mean 'NS::templ'?}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(templ<int>)
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(NS::templ<int>)
 
 // expected-error at +2{{use of undeclared identifier 'T'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(templ<T>)
 // expected-error at +2{{use of undeclared identifier 'T'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(NS::templ<T>)
 
 // expected-error at +3{{expected ')'}}
 // expected-note at +2{{to match this '('}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine (NS::foo())
 
 // expected-error at +2 {{expected unqualified-id}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine()
 
 // expected-error at +2 {{expected unqualified-id}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine(int)
 
 // expected-error at +3{{'C' does not refer to a value}}
 // expected-note@#CDef{{declared here}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine (NS::C)
 // expected-error at +3{{'private_mem_func' is a private member of 'NS::C'}}
 // expected-note@#PrivateMemFunc{{implicitly declared private here}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine (NS::C::private_mem_func)
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-warning at +1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
 #pragma acc routine (NS::C::public_mem_func)

diff  --git a/clang/test/ParserOpenACC/parse-wait-clause.c b/clang/test/ParserOpenACC/parse-wait-clause.c
index 7639e6242ea671..a3037905350469 100644
--- a/clang/test/ParserOpenACC/parse-wait-clause.c
+++ b/clang/test/ParserOpenACC/parse-wait-clause.c
@@ -3,155 +3,227 @@
 void func() {
   int i, j;
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait
+  {}
 
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait clause-list
+  {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (
+      {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait ()
+      {}
 
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait () clause-list
+      {}
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (devnum:
+    {}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (devnum:)
+    {}
 
-  // expected-error at +3{{expected expression}}
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected expression}}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (devnum:) clause-list
+    {}
 
-  // expected-error at +4{{expected ':'}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected ':'}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (devnum: i + j
+    {}
 
-  // expected-error at +2{{expected ':'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected ':'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (devnum: i + j)
+    {}
 
-  // expected-error at +3{{expected ':'}}
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ':'}}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (devnum: i + j) clause-list
+    {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (queues:
+    {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (queues:)
+    {}
 
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (queues:) clause-list
+    {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (devnum: i + j:queues:
+    {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (devnum: i + j:queues:)
+    {}
 
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (devnum: i + j:queues:) clause-list
+    {}
 
-  // expected-error at +4{{use of undeclared identifier 'devnum'}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{use of undeclared identifier 'devnum'}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (queues:devnum: i + j
+    {}
 
-  // expected-error at +2{{use of undeclared identifier 'devnum'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{use of undeclared identifier 'devnum'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (queues:devnum: i + j)
+    {}
 
-  // expected-error at +3{{use of undeclared identifier 'devnum'}}
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{use of undeclared identifier 'devnum'}}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait (queues:devnum: i + j) clause-list
+    {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(i, j, 1+1, 3.3
+    {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(i, j, 1+1, 3.3)
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    {}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(i, j, 1+1, 3.3) clause-list
+    {}
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(,
+    {}
 
-  // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{expected expression}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(,)
+    {}
 
-  // expected-error at +3{{expected expression}}
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected expression}}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(,) clause-list
+    {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(queues:i, j, 1+1, 3.3
+    {}
 
-  // expected-error at +4{{expected expression}}
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +5{{expected expression}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(queues:i, j, 1+1, 3.3,
+    {}
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(queues:i, j, 1+1, 3.3)
+    {}
 
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(queues:i, j, 1+1, 3.3) clause-list
+    {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(devnum:3:i, j, 1+1, 3.3
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    {}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(devnum:3:i, j, 1+1, 3.3)
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    {}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(devnum:3:i, j, 1+1, 3.3) clause-list
+    {}
 
-  // expected-error at +3{{expected ')'}}
-  // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-error at +4{{expected ')'}}
+  // expected-note at +3{{to match this '('}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(devnum:3:queues:i, j, 1+1, 3.3
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    {}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(devnum:3:queues:i, j, 1+1, 3.3)
-  // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+    {}
+  // expected-error at +3{{invalid OpenACC clause 'clause'}}
+  // expected-warning at +2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
+  // expected-warning at +1{{OpenACC construct 'parallel' not yet implemented, pragma ignored}}
   #pragma acc parallel wait(devnum:3:queues:i, j, 1+1, 3.3) clause-list
+    {}
 }

diff  --git a/clang/test/ParserOpenACC/parse-wait-construct.c b/clang/test/ParserOpenACC/parse-wait-construct.c
index 8f99f4aa8f67b1..30a9fc8c12a474 100644
--- a/clang/test/ParserOpenACC/parse-wait-construct.c
+++ b/clang/test/ParserOpenACC/parse-wait-construct.c
@@ -3,155 +3,155 @@
 void func() {
   int i, j;
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait
 
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait clause-list
 
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait ()
 
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait () clause-list
 
   // expected-error at +4{{expected expression}}
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (devnum:
 
   // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (devnum:)
 
   // expected-error at +3{{expected expression}}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (devnum:) clause-list
 
   // expected-error at +4{{expected ':'}}
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (devnum: i + j
 
   // expected-error at +2{{expected ':'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (devnum: i + j)
 
   // expected-error at +3{{expected ':'}}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (devnum: i + j) clause-list
 
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (queues:
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (queues:)
 
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (queues:) clause-list
 
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (devnum: i + j:queues:
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (devnum: i + j:queues:)
 
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (devnum: i + j:queues:) clause-list
 
   // expected-error at +4{{use of undeclared identifier 'devnum'}}
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (queues:devnum: i + j
 
   // expected-error at +2{{use of undeclared identifier 'devnum'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (queues:devnum: i + j)
 
   // expected-error at +3{{use of undeclared identifier 'devnum'}}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait (queues:devnum: i + j) clause-list
 
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(i, j, 1+1, 3.3
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(i, j, 1+1, 3.3)
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(i, j, 1+1, 3.3) clause-list
 
   // expected-error at +4{{expected expression}}
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(,
 
   // expected-error at +2{{expected expression}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(,)
 
   // expected-error at +3{{expected expression}}
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(,) clause-list
 
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(queues:i, j, 1+1, 3.3
 
   // expected-error at +4{{expected expression}}
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(queues:i, j, 1+1, 3.3,
 
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(queues:i, j, 1+1, 3.3)
 
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(queues:i, j, 1+1, 3.3) clause-list
 
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(devnum:3:i, j, 1+1, 3.3
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(devnum:3:i, j, 1+1, 3.3)
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(devnum:3:i, j, 1+1, 3.3) clause-list
 
   // expected-error at +3{{expected ')'}}
   // expected-note at +2{{to match this '('}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(devnum:3:queues:i, j, 1+1, 3.3
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(devnum:3:queues:i, j, 1+1, 3.3)
   // expected-error at +2{{invalid OpenACC clause 'clause'}}
-  // expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+  // expected-warning at +1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
   #pragma acc wait(devnum:3:queues:i, j, 1+1, 3.3) clause-list
 }

diff  --git a/clang/test/ParserOpenACC/unimplemented.c b/clang/test/ParserOpenACC/unimplemented.c
index be8e62b5811789..7426e028c0252c 100644
--- a/clang/test/ParserOpenACC/unimplemented.c
+++ b/clang/test/ParserOpenACC/unimplemented.c
@@ -1,26 +1,23 @@
 // RUN: %clang_cc1 %s -verify -fopenacc
 
 // Parser::ParseExternalDeclaration
-// expected-error at +3{{invalid OpenACC directive 'havent'}}
-// expected-error at +2{{invalid OpenACC clause 'implemented'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-error at +2{{invalid OpenACC directive 'havent'}}
+// expected-error at +1{{invalid OpenACC clause 'implemented'}}
 #pragma acc havent implemented
 int foo;
 
 struct S {
 // Parser::ParseStructUnionBody
-// expected-error at +3{{invalid OpenACC directive 'havent'}}
-// expected-error at +2{{invalid OpenACC clause 'implemented'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-error at +2{{invalid OpenACC directive 'havent'}}
+// expected-error at +1{{invalid OpenACC clause 'implemented'}}
 #pragma acc havent implemented
   int foo;
 };
 
 void func() {
 // Parser::ParseStmtOrDeclarationAfterAttributes
-// expected-error at +3{{invalid OpenACC directive 'havent'}}
-// expected-error at +2{{invalid OpenACC clause 'implemented'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-error at +2{{invalid OpenACC directive 'havent'}}
+// expected-error at +1{{invalid OpenACC clause 'implemented'}}
 #pragma acc havent implemented
   while(0) {}
 }

diff  --git a/clang/test/ParserOpenACC/unimplemented.cpp b/clang/test/ParserOpenACC/unimplemented.cpp
index 6ffc84a3bc09d3..0acd69a7ae0876 100644
--- a/clang/test/ParserOpenACC/unimplemented.cpp
+++ b/clang/test/ParserOpenACC/unimplemented.cpp
@@ -1,26 +1,23 @@
 // RUN: %clang_cc1 %s -verify -fopenacc
 
 // Parser::ParseExternalDeclaration
-// expected-error at +3{{invalid OpenACC directive 'havent'}}
-// expected-error at +2{{invalid OpenACC clause 'implemented'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-error at +2{{invalid OpenACC directive 'havent'}}
+// expected-error at +1{{invalid OpenACC clause 'implemented'}}
 #pragma acc havent implemented
 int foo;
 
 struct S {
 // Parser::ParseCXXClassMemberDeclarationWithPragmas
-// expected-error at +3{{invalid OpenACC directive 'havent'}}
-// expected-error at +2{{invalid OpenACC clause 'implemented'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-error at +2{{invalid OpenACC directive 'havent'}}
+// expected-error at +1{{invalid OpenACC clause 'implemented'}}
 #pragma acc havent implemented
   int foo;
 };
 
 void func() {
 // Parser::ParseStmtOrDeclarationAfterAttributes
-// expected-error at +3{{invalid OpenACC directive 'havent'}}
-// expected-error at +2{{invalid OpenACC clause 'implemented'}}
-// expected-warning at +1{{OpenACC directives not yet implemented, pragma ignored}}
+// expected-error at +2{{invalid OpenACC directive 'havent'}}
+// expected-error at +1{{invalid OpenACC clause 'implemented'}}
 #pragma acc havent implemented
   while(false) {}
 }


        


More information about the cfe-commits mailing list