]> granicus.if.org Git - clang/commitdiff
[clang][OpeMP] Model OpenMP structured-block in AST (PR40563)
authorRoman Lebedev <lebedev.ri@gmail.com>
Wed, 20 Mar 2019 16:32:36 +0000 (16:32 +0000)
committerRoman Lebedev <lebedev.ri@gmail.com>
Wed, 20 Mar 2019 16:32:36 +0000 (16:32 +0000)
Summary:
https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-5.0.pdf, page 3:
```
structured block

For C/C++, an executable statement, possibly compound, with a single entry at the
top and a single exit at the bottom, or an OpenMP construct.

COMMENT: See Section 2.1 on page 38 for restrictions on structured
blocks.
```
```
2.1 Directive Format

Some executable directives include a structured block. A structured block:
• may contain infinite loops where the point of exit is never reached;
• may halt due to an IEEE exception;
• may contain calls to exit(), _Exit(), quick_exit(), abort() or functions with a
_Noreturn specifier (in C) or a noreturn attribute (in C/C++);
• may be an expression statement, iteration statement, selection statement, or try block, provided
that the corresponding compound statement obtained by enclosing it in { and } would be a
structured block; and

Restrictions
Restrictions to structured blocks are as follows:
• Entry to a structured block must not be the result of a branch.
• The point of exit cannot be a branch out of the structured block.
C / C++
• The point of entry to a structured block must not be a call to setjmp().
• longjmp() and throw() must not violate the entry/exit criteria.
```

Of particular note here is the fact that OpenMP structured blocks are as-if `noexcept`,
in the same sense as with the normal `noexcept` functions in C++.
I.e. if throw happens, and it attempts to travel out of the `noexcept` function
(here: out of the current structured-block), then the program terminates.

Now, one of course can say that since it is explicitly prohibited by the Specification,
then any and all programs that violate this Specification contain undefined behavior,
and are unspecified, and thus no one should care about them. Just don't write broken code /s

But i'm not sure this is a reasonable approach.
I have personally had oss-fuzz issues of this origin - exception thrown inside
of an OpenMP structured-block that is not caught, thus causing program termination.
This issue isn't all that hard to catch, it's not any particularly different from
diagnosing the same situation with the normal `noexcept` function.

Now, clang static analyzer does not presently model exceptions.
But clang-tidy has a simplisic [[ https://clang.llvm.org/extra/clang-tidy/checks/bugprone-exception-escape.html | bugprone-exception-escape ]] check,
and it is even refactored as a `ExceptionAnalyzer` class for reuse.
So it would be trivial to use that analyzer to check for
exceptions escaping out of OpenMP structured blocks. (D59466)

All that sounds too great to be true. Indeed, there is a caveat.
Presently, it's practically impossible to do. To check a OpenMP structured block
you need to somehow 'get' the OpenMP structured block, and you can't because
it's simply not modelled in AST. `CapturedStmt`/`CapturedDecl` is not it's representation.

Now, it is of course possible to write e.g. some AST matcher that would e.g.
match every OpenMP executable directive, and then return the whatever `Stmt` is
the structured block of said executable directive, if any.
But i said //practically//. This isn't practical for the following reasons:
1. This **will** bitrot. That matcher will need to be kept up-to-date,
   and refreshed with every new OpenMP spec version.
2. Every single piece of code that would want that knowledge would need to
   have such matcher. Well, okay, if it is an AST matcher, it could be shared.
   But then you still have `RecursiveASTVisitor` and friends.
   `2 > 1`, so now you have code duplication.

So it would be reasonable (and is fully within clang AST spirit) to not
force every single consumer to do that work, but instead store that knowledge
in the correct, and appropriate place - AST, class structure.

Now, there is another hoop we need to get through.
It isn't fully obvious //how// to model this.
The best solution would of course be to simply add a `OMPStructuredBlock` transparent
node. It would be optimal, it would give us two properties:
* Given this `OMPExecutableDirective`, what's it OpenMP structured block?
* It is trivial to  check whether the `Stmt*` is a OpenMP structured block (`isa<OMPStructuredBlock>(ptr)`)

But OpenMP structured block isn't **necessarily** the first, direct child of `OMP*Directive`.
(even ignoring the clang's `CapturedStmt`/`CapturedDecl` that were inserted inbetween).
So i'm not sure whether or not we could re-create AST statements after they were already created?
There would be other costs to a new AST node: https://bugs.llvm.org/show_bug.cgi?id=40563#c12
```
1. You will need to break the representation of loops. The body should be replaced by the "structured block" entity.
2. You will need to support serialization/deserialization.
3. You will need to support template instantiation.
4. You will need to support codegen and take this new construct to account in each OpenMP directive.
```

Instead, there **is** an functionally-equivalent, alternative solution, consisting of two parts.

Part 1:
* Add a member function `isStandaloneDirective()` to the `OMPExecutableDirective` class,
  that will tell whether this directive is stand-alone or not, as per the spec.
  We need it because we can't just check for the existance of associated statements,
  see code comment.
* Add a member function `getStructuredBlock()` to the OMPExecutableDirective` class itself,
  that assert that this is not a stand-alone directive, and either return the correct loop body
  if this is a loop-like directive, or the captured statement.
This way, given an `OMPExecutableDirective`, we can get it's structured block.
Also, since the knowledge is ingrained into the clang OpenMP implementation,
it will not cause any duplication, and //hopefully// won't bitrot.

Great we achieved 1 of 2 properties of `OMPStructuredBlock` approach.

Thus, there is a second part needed:
* How can we check whether a given `Stmt*` is `OMPStructuredBlock`?
Well, we can't really, in general. I can see this workaround:
```
class FunctionASTVisitor : public RecursiveASTVisitor<FunctionASTVisitor> {
  using Base = RecursiveASTVisitor<FunctionASTVisitor>;
public:
  bool VisitOMPExecDir(OMPExecDir *D) {
    OmpStructuredStmts.emplace_back(D.getStructuredStmt());
  }
  bool VisitSOMETHINGELSE(???) {
    if(InOmpStructuredStmt)
      HI!
  }
  bool TraverseStmt(Stmt *Node) {
    if (!Node)
      return Base::TraverseStmt(Node);
    if (OmpStructuredStmts.back() == Node)
      ++InOmpStructuredStmt;
    Base::TraverseStmt(Node);
    if (OmpStructuredStmts.back() == Node) {
      OmpStructuredStmts.pop_back();
      --InOmpStructuredStmt;
    }
    return true;
  }
  std::vector<Stmt*> OmpStructuredStmts;
  int InOmpStructuredStmt = 0;
};
```
But i really don't see using it in practice.
It's just too intrusive; and again, requires knowledge duplication.

.. but no. The solution lies right on the ground.
Why don't we simply store this `i'm a openmp structured block` in the bitfield of the `Stmt` itself?
This does not appear to have any impact on the memory footprint of the clang AST,
since it's just a single extra bit in the bitfield. At least the static assertions don't fail.
Thus, indeed, we can achieve both of the properties without a new AST node.

We can cheaply set that bit right in sema, at the end of `Sema::ActOnOpenMPExecutableDirective()`,
by just calling the `getStructuredBlock()` that we just added.
Test coverage that demonstrates all this has been added.

This isn't as great with serialization though. Most of it does not use abbrevs,
so we do end up paying the full price (4 bytes?) instead of a single bit.
That price, of course, can be reclaimed by using abbrevs.
In fact, i suspect that //might// not just reclaim these bytes, but pack these PCH significantly.

I'm not seeing a third solution. If there is one, it would be interesting to hear about it.
("just don't write code that would require `isa<OMPStructuredBlock>(ptr)`" is not a solution.)

Fixes [[ https://bugs.llvm.org/show_bug.cgi?id=40563 | PR40563 ]].

Reviewers: ABataev, rjmccall, hfinkel, rsmith, riccibruno, gribozavr

Reviewed By: ABataev, gribozavr

Subscribers: mgorny, aaron.ballman, steveire, guansong, jfb, jdoerfert, cfe-commits

Tags: #clang, #openmp

Differential Revision: https://reviews.llvm.org/D59214

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

63 files changed:
include/clang/AST/Stmt.h
include/clang/AST/StmtOpenMP.h
include/clang/AST/TextNodeDumper.h
lib/AST/StmtOpenMP.cpp
lib/AST/TextNodeDumper.cpp
lib/Sema/SemaOpenMP.cpp
lib/Serialization/ASTReaderStmt.cpp
lib/Serialization/ASTWriterDecl.cpp
lib/Serialization/ASTWriterStmt.cpp
test/AST/ast-dump-openmp-atomic.c
test/AST/ast-dump-openmp-barrier.c
test/AST/ast-dump-openmp-cancel.c
test/AST/ast-dump-openmp-cancellation-point.c
test/AST/ast-dump-openmp-critical.c
test/AST/ast-dump-openmp-distribute-parallel-for-simd.c
test/AST/ast-dump-openmp-distribute-parallel-for.c
test/AST/ast-dump-openmp-distribute-simd.c
test/AST/ast-dump-openmp-distribute.c
test/AST/ast-dump-openmp-flush.c
test/AST/ast-dump-openmp-for-simd.c
test/AST/ast-dump-openmp-for.c
test/AST/ast-dump-openmp-master.c
test/AST/ast-dump-openmp-ordered.c
test/AST/ast-dump-openmp-parallel-for-simd.c
test/AST/ast-dump-openmp-parallel-for.c
test/AST/ast-dump-openmp-parallel-master-XFAIL.c
test/AST/ast-dump-openmp-parallel-sections.c
test/AST/ast-dump-openmp-parallel.c
test/AST/ast-dump-openmp-section.c
test/AST/ast-dump-openmp-sections.c
test/AST/ast-dump-openmp-simd.c
test/AST/ast-dump-openmp-single.c
test/AST/ast-dump-openmp-target-data.c
test/AST/ast-dump-openmp-target-enter-data.c
test/AST/ast-dump-openmp-target-exit-data.c
test/AST/ast-dump-openmp-target-parallel-for-simd.c
test/AST/ast-dump-openmp-target-parallel-for.c
test/AST/ast-dump-openmp-target-parallel.c
test/AST/ast-dump-openmp-target-simd.c
test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c
test/AST/ast-dump-openmp-target-teams-distribute-parallel-for.c
test/AST/ast-dump-openmp-target-teams-distribute-simd.c
test/AST/ast-dump-openmp-target-teams-distribute.c
test/AST/ast-dump-openmp-target-teams.c
test/AST/ast-dump-openmp-target-update.c
test/AST/ast-dump-openmp-target.c
test/AST/ast-dump-openmp-task.c
test/AST/ast-dump-openmp-taskgroup.c
test/AST/ast-dump-openmp-taskloop-simd.c
test/AST/ast-dump-openmp-taskloop.c
test/AST/ast-dump-openmp-taskwait.c
test/AST/ast-dump-openmp-taskyield.c
test/AST/ast-dump-openmp-teams-distribute-parallel-for-simd.c
test/AST/ast-dump-openmp-teams-distribute-parallel-for.c
test/AST/ast-dump-openmp-teams-distribute-simd.c
test/AST/ast-dump-openmp-teams-distribute.c
test/AST/ast-dump-openmp-teams.c
test/AST/dump.cpp
test/PCH/stmt-openmp_structured_block-bit.cpp [new file with mode: 0644]
unittests/AST/ASTPrint.h [new file with mode: 0644]
unittests/AST/CMakeLists.txt
unittests/AST/OMPStructuredBlockTest.cpp [new file with mode: 0644]
unittests/AST/StmtPrinterTest.cpp

index e63354c263178f81463fa79aaf13e6ada92f6355..ff6c18c44f07dfc27ff492142304142dc0680d37 100644 (file)
@@ -91,12 +91,20 @@ protected:
   //===--- Statement bitfields classes ---===//
 
   class StmtBitfields {
+    friend class ASTStmtReader;
+    friend class ASTStmtWriter;
     friend class Stmt;
 
     /// The statement class.
     unsigned sClass : 8;
+
+    /// This bit is set only for the Stmts that are the structured-block of
+    /// OpenMP executable directives. Directives that have a structured block
+    /// are called "non-standalone" directives.
+    /// I.e. those returned by OMPExecutableDirective::getStructuredBlock().
+    unsigned IsOMPStructuredBlock : 1;
   };
-  enum { NumStmtBits = 8 };
+  enum { NumStmtBits = 9 };
 
   class NullStmtBitfields {
     friend class ASTStmtReader;
@@ -1026,6 +1034,7 @@ public:
     static_assert(sizeof(*this) % alignof(void *) == 0,
                   "Insufficient alignment!");
     StmtBits.sClass = SC;
+    StmtBits.IsOMPStructuredBlock = false;
     if (StatisticsEnabled) Stmt::addStmtClass(SC);
   }
 
@@ -1035,6 +1044,11 @@ public:
 
   const char *getStmtClassName() const;
 
+  bool isOMPStructuredBlock() const { return StmtBits.IsOMPStructuredBlock; }
+  void setIsOMPStructuredBlock(bool IsOMPStructuredBlock) {
+    StmtBits.IsOMPStructuredBlock = IsOMPStructuredBlock;
+  }
+
   /// SourceLocation tokens are not useful in isolation - they are low level
   /// value objects created/interpreted by SourceManager. We assume AST
   /// clients will have a pointer to the respective SourceManager.
index 4b6e706296cd04ccb050f154f1dfcfd12d37e01b..fc1fa643dfddf34fb9d29764982968d2c73325d9 100644 (file)
@@ -261,6 +261,22 @@ public:
   ArrayRef<OMPClause *> clauses() const {
     return const_cast<OMPExecutableDirective *>(this)->getClauses();
   }
+
+  /// Returns whether or not this is a Standalone directive.
+  ///
+  /// Stand-alone directives are executable directives
+  /// that have no associated user code.
+  bool isStandaloneDirective() const;
+
+  /// Returns the AST node representing OpenMP structured-block of this
+  /// OpenMP executable directive,
+  /// Prerequisite: Executable Directive must not be Standalone directive.
+  const Stmt *getStructuredBlock() const;
+
+  Stmt *getStructuredBlock() {
+    return const_cast<Stmt *>(
+        const_cast<const OMPExecutableDirective *>(this)->getStructuredBlock());
+  }
 };
 
 /// This represents '#pragma omp parallel' directive.
index d164cc13314786e44de429c07fabd079118cba95..1781409fe04d4d0cb8318356251a86840819e4a8 100644 (file)
@@ -307,6 +307,7 @@ public:
   void VisitImportDecl(const ImportDecl *D);
   void VisitPragmaCommentDecl(const PragmaCommentDecl *D);
   void VisitPragmaDetectMismatchDecl(const PragmaDetectMismatchDecl *D);
+  void VisitOMPExecutableDirective(const OMPExecutableDirective *D);
   void VisitOMPDeclareReductionDecl(const OMPDeclareReductionDecl *D);
   void VisitOMPRequiresDecl(const OMPRequiresDecl *D);
   void VisitOMPCapturedExprDecl(const OMPCapturedExprDecl *D);
index 6e03181f27acf3fed1a6c2a6fe557c09c2e8d67c..4e829897cebe61fb4ca5c06e97f3abbf46475272 100644 (file)
@@ -22,6 +22,25 @@ void OMPExecutableDirective::setClauses(ArrayRef<OMPClause *> Clauses) {
   std::copy(Clauses.begin(), Clauses.end(), getClauses().begin());
 }
 
+bool OMPExecutableDirective::isStandaloneDirective() const {
+  // Special case: 'omp target enter data', 'omp target exit data',
+  // 'omp target update' are stand-alone directives, but for implementation
+  // reasons they have empty synthetic structured block, to simplify codegen.
+  if (isa<OMPTargetEnterDataDirective>(this) ||
+      isa<OMPTargetExitDataDirective>(this) ||
+      isa<OMPTargetUpdateDirective>(this))
+    return true;
+  return !hasAssociatedStmt() || !getAssociatedStmt();
+}
+
+const Stmt *OMPExecutableDirective::getStructuredBlock() const {
+  assert(!isStandaloneDirective() &&
+         "Standalone Executable Directives don't have Structured Blocks.");
+  if (auto *LD = dyn_cast<OMPLoopDirective>(this))
+    return LD->getBody();
+  return getInnermostCapturedStmt()->getCapturedStmt();
+}
+
 void OMPLoopDirective::setCounters(ArrayRef<Expr *> A) {
   assert(A.size() == getCollapsedNumber() &&
          "Number of loop counters is not the same as the collapsed number");
index 86219d246679276a1f60d131a417804687a0ca82..f287e961b62050a9a3ea26208ff1553b96fb99ed 100644 (file)
@@ -121,6 +121,9 @@ void TextNodeDumper::Visit(const Stmt *Node) {
   dumpPointer(Node);
   dumpSourceRange(Node->getSourceRange());
 
+  if (Node->isOMPStructuredBlock())
+    OS << " openmp_structured_block";
+
   if (const auto *E = dyn_cast<Expr>(Node)) {
     dumpType(E->getType());
 
@@ -1414,6 +1417,12 @@ void TextNodeDumper::VisitPragmaDetectMismatchDecl(
   OS << " \"" << D->getName() << "\" \"" << D->getValue() << "\"";
 }
 
+void TextNodeDumper::VisitOMPExecutableDirective(
+    const OMPExecutableDirective *D) {
+  if (D->isStandaloneDirective())
+    OS << " openmp_standalone_directive";
+}
+
 void TextNodeDumper::VisitOMPDeclareReductionDecl(
     const OMPDeclareReductionDecl *D) {
   dumpName(D);
index 8b35371e0e33645b3b50b2c928642ad9840eca4e..a36eaefecfb7fe4f172684b7c913283a6446dc99 100644 (file)
@@ -3915,6 +3915,8 @@ StmtResult Sema::ActOnOpenMPExecutableDirective(
     llvm_unreachable("Unknown OpenMP directive");
   }
 
+  ErrorFound = Res.isInvalid() || ErrorFound;
+
   for (const auto &P : VarsWithInheritedDSA) {
     Diag(P.second->getExprLoc(), diag::err_omp_no_dsa_for_variable)
         << P.first << P.second->getSourceRange();
@@ -3927,6 +3929,13 @@ StmtResult Sema::ActOnOpenMPExecutableDirective(
 
   if (ErrorFound)
     return StmtError();
+
+  if (!(Res.getAs<OMPExecutableDirective>()->isStandaloneDirective())) {
+    Res.getAs<OMPExecutableDirective>()
+        ->getStructuredBlock()
+        ->setIsOMPStructuredBlock(true);
+  }
+
   return Res;
 }
 
index 2068e043118d0a7b6995c3b4b4b2777d644b9aa1..ea7c2a459599cf3807b26b8247e131d40db061e6 100644 (file)
@@ -111,7 +111,7 @@ namespace clang {
 
     /// The number of record fields required for the Stmt class
     /// itself.
-    static const unsigned NumStmtFields = 0;
+    static const unsigned NumStmtFields = 1;
 
     /// The number of record fields required for the Expr class
     /// itself.
@@ -147,6 +147,7 @@ void ASTStmtReader::ReadTemplateKWAndArgsInfo(ASTTemplateKWAndArgsInfo &Args,
 }
 
 void ASTStmtReader::VisitStmt(Stmt *S) {
+  S->setIsOMPStructuredBlock(Record.readInt());
   assert(Record.getIdx() == NumStmtFields && "Incorrect statement field count");
 }
 
index 37173e862cd6d7e80cd54353d17d8698c3516a6b..c08abb805f3b61b9d0c3e644a9e29d84584f6e35 100644 (file)
@@ -2179,7 +2179,8 @@ void ASTWriter::WriteDeclAbbrevs() {
   Abv = std::make_shared<BitCodeAbbrev>();
   Abv->Add(BitCodeAbbrevOp(serialization::EXPR_DECL_REF));
   //Stmt
-  //Expr
+  Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // IsOMPStructuredBlock
+  // Expr
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Type
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); //TypeDependent
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); //ValueDependent
@@ -2202,7 +2203,8 @@ void ASTWriter::WriteDeclAbbrevs() {
   Abv = std::make_shared<BitCodeAbbrev>();
   Abv->Add(BitCodeAbbrevOp(serialization::EXPR_INTEGER_LITERAL));
   //Stmt
-  //Expr
+  Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // IsOMPStructuredBlock
+  // Expr
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Type
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); //TypeDependent
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); //ValueDependent
@@ -2220,7 +2222,8 @@ void ASTWriter::WriteDeclAbbrevs() {
   Abv = std::make_shared<BitCodeAbbrev>();
   Abv->Add(BitCodeAbbrevOp(serialization::EXPR_CHARACTER_LITERAL));
   //Stmt
-  //Expr
+  Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // IsOMPStructuredBlock
+  // Expr
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Type
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); //TypeDependent
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); //ValueDependent
@@ -2238,6 +2241,7 @@ void ASTWriter::WriteDeclAbbrevs() {
   Abv = std::make_shared<BitCodeAbbrev>();
   Abv->Add(BitCodeAbbrevOp(serialization::EXPR_IMPLICIT_CAST));
   // Stmt
+  Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // IsOMPStructuredBlock
   // Expr
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Type
   Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); //TypeDependent
index b3cbff6776a82ad65abb2c10bf4d143e6f5a38bd..2875f253d2ce716654e2657d52b1fdf11247fdad 100644 (file)
@@ -67,6 +67,7 @@ void ASTStmtWriter::AddTemplateKWAndArgsInfo(
 }
 
 void ASTStmtWriter::VisitStmt(Stmt *S) {
+  Record.push_back(S->StmtBits.IsOMPStructuredBlock);
 }
 
 void ASTStmtWriter::VisitNullStmt(NullStmt *S) {
index cbc2a1537eb152cb0712752e8683f9d44b13721a..f95ef2ffb996d3f839ed0044eb0600ca4994391a 100644 (file)
@@ -12,7 +12,7 @@ void test(int i) {
 // CHECK-NEXT:     `-OMPAtomicDirective {{.*}} <line:4:9, col:19>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:5:3, col:5>
 // CHECK-NEXT:         |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:         | |-UnaryOperator {{.*}} <col:3, col:5> 'int' prefix '++'
+// CHECK-NEXT:         | |-UnaryOperator {{.*}} <col:3, col:5> openmp_structured_block 'int' prefix '++'
 // CHECK-NEXT:         | | `-DeclRefExpr {{.*}} <col:5> 'int' lvalue ParmVar {{.*}} 'i' 'int'
 // CHECK-NEXT:         | `-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-atomic.c:4:9) *const restrict'
 // CHECK-NEXT:         `-DeclRefExpr {{.*}} <line:5:5> 'int' lvalue ParmVar {{.*}} 'i' 'int'
index b13e0e9f2af82a5706e9412b4bb2c282a536d45d..1173a0e6f2a787d1c255602b996faf9582ab9a85 100644 (file)
@@ -7,4 +7,4 @@ void test() {
 // CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
 // CHECK: `-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-barrier.c:3:1, line:5:1> line:3:6 test 'void ()'
 // CHECK-NEXT:   `-CompoundStmt {{.*}} <col:13, line:5:1>
-// CHECK-NEXT:     `-OMPBarrierDirective {{.*}} <line:4:9, col:20>
+// CHECK-NEXT:     `-OMPBarrierDirective {{.*}} <line:4:9, col:20> openmp_standalone_directive
index d86f79daf36d58880dd67a92bd54ad35b0484222..f7f0fcd3c73cd7f6354787d46df0e60a712ef1d1 100644 (file)
@@ -13,8 +13,8 @@ void test() {
 // CHECK-NEXT:     `-OMPParallelDirective {{.*}} <line:4:9, col:21>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:5:3, line:7:3>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |-CompoundStmt {{.*}} <line:5:3, line:7:3>
-// CHECK-NEXT:           | `-OMPCancelDirective {{.*}} <line:6:9, col:28>
+// CHECK-NEXT:           |-CompoundStmt {{.*}} <line:5:3, line:7:3> openmp_structured_block
+// CHECK-NEXT:           | `-OMPCancelDirective {{.*}} <line:6:9, col:28> openmp_standalone_directive
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:           `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-cancel.c:4:9) *const restrict'
index 57979e4c9d1d578efa6e94387076c0c52a408d34..36baa73bd1de9f1a2b400d24cd39c816dfa65a2e 100644 (file)
@@ -13,8 +13,8 @@ void test() {
 // CHECK-NEXT:     `-OMPParallelDirective {{.*}} <line:4:9, col:21>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:5:3, line:7:3>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |-CompoundStmt {{.*}} <line:5:3, line:7:3>
-// CHECK-NEXT:           | `-OMPCancellationPointDirective {{.*}} <line:6:9, col:40>
+// CHECK-NEXT:           |-CompoundStmt {{.*}} <line:5:3, line:7:3> openmp_structured_block
+// CHECK-NEXT:           | `-OMPCancellationPointDirective {{.*}} <line:6:9, col:40> openmp_standalone_directive
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:           `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-cancellation-point.c:4:9) *const restrict'
index da2d38f6686734fa6903e8b045baaf7677653cc5..c618c40de593a6aae870aef179d8ac7adf2321b0 100644 (file)
@@ -11,5 +11,5 @@ void test() {
 // CHECK-NEXT:     `-OMPCriticalDirective {{.*}} <line:4:9, col:21>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:5:3>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:           |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:           |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           `-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-critical.c:4:9) *const restrict'
index c332233bebda1b1ba9484982bd3025d0b7d1377c..472474c1219687f1eb6c3a4bb726ef4396370577 100644 (file)
@@ -54,7 +54,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -82,7 +82,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -128,7 +128,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -186,7 +186,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -233,7 +233,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index e15b00d9fe35aee7881925f4435fe5d2cfa51b34..25279198ddb8d984563f7a7812e905d12537acaa 100644 (file)
@@ -54,7 +54,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -82,7 +82,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -128,7 +128,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -186,7 +186,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -233,7 +233,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 7d772ebb5fea8c4c322439ebb986486687a74d60..cf0adbe7be0256eeb69eac279eb84343afc8f9d2 100644 (file)
@@ -54,7 +54,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-distribute-simd.c:4:9) *const restrict'
 // CHECK-NEXT: |       | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -78,7 +78,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -120,7 +120,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -174,7 +174,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-distribute-simd.c:24:9) *const restrict'
 // CHECK-NEXT: |       | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -217,7 +217,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 590e5fa48df9ce04acbd5fca3a0b165b124d8331..6e08745b4cbc1993eef724d81aaf6f3488c39f83 100644 (file)
@@ -54,7 +54,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-distribute.c:4:9) *const restrict'
 // CHECK-NEXT: |       | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -78,7 +78,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -120,7 +120,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -174,7 +174,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-distribute.c:24:9) *const restrict'
 // CHECK-NEXT: |       | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -217,7 +217,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 78242359585ed71e5a44d4ef93005a21b65e664c..74b8c159c024eeddecdcf8cf077859433699de0b 100644 (file)
@@ -7,4 +7,4 @@ void test() {
 // CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
 // CHECK: `-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-flush.c:3:1, line:5:1> line:3:6 test 'void ()'
 // CHECK-NEXT:   `-CompoundStmt {{.*}} <col:13, line:5:1>
-// CHECK-NEXT:     `-OMPFlushDirective {{.*}} <line:4:9, col:18>
+// CHECK-NEXT:     `-OMPFlushDirective {{.*}} <line:4:9, col:18> openmp_standalone_directive
index 2f7cea51139af3da0fa3e64f71060b943dee9841..fc7d8519f2b5d6bb9d9616ee1767c0e105fc0e84 100644 (file)
@@ -54,7 +54,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-for-simd.c:4:9) *const restrict'
 // CHECK-NEXT: |       | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -78,7 +78,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -120,7 +120,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -174,7 +174,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-for-simd.c:24:9) *const restrict'
 // CHECK-NEXT: |       | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -217,7 +217,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 31a1cbc4879a1b9003077034ae8f694c490b6a9a..7294f794a3656de1a00886b3ae2bd1a40c9c2511 100644 (file)
@@ -54,7 +54,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr 0x{{.*}} <col:23> 'int' lvalue ParmVar 0x{{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator 0x{{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr 0x{{.*}} <col:26> 'int' lvalue Var 0x{{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt 0x{{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt 0x{{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl 0x{{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-for.c:4:9) *const restrict'
 // CHECK-NEXT: |       | `-VarDecl 0x{{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       |   `-IntegerLiteral 0x{{.*}} <col:16> 'int' 0
@@ -78,7 +78,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr 0x{{.*}} <col:23> 'int' lvalue ParmVar 0x{{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator 0x{{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr 0x{{.*}} <col:26> 'int' lvalue Var 0x{{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt 0x{{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt 0x{{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt 0x{{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl 0x{{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral 0x{{.*}} <col:18> 'int' 0
@@ -120,7 +120,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr 0x{{.*}} <col:23> 'int' lvalue ParmVar 0x{{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator 0x{{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr 0x{{.*}} <col:26> 'int' lvalue Var 0x{{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt 0x{{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt 0x{{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt 0x{{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl 0x{{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral 0x{{.*}} <col:18> 'int' 0
@@ -174,7 +174,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr 0x{{.*}} <col:25> 'int' lvalue ParmVar 0x{{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator 0x{{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr 0x{{.*}} <col:28> 'int' lvalue Var 0x{{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt 0x{{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt 0x{{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl 0x{{.*}} <line:24:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-for.c:24:9) *const restrict'
 // CHECK-NEXT: |       | |-VarDecl 0x{{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       | | `-IntegerLiteral 0x{{.*}} <col:16> 'int' 0
@@ -217,7 +217,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr 0x{{.*}} <col:25> 'int' lvalue ParmVar 0x{{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator 0x{{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr 0x{{.*}} <col:28> 'int' lvalue Var 0x{{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt 0x{{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt 0x{{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt 0x{{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl 0x{{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral 0x{{.*}} <col:20> 'int' 0
index e2d03312a40be40fabd8141713143a6384f067a0..9325e59cbf07bba610be8586dbda4bad9a90e6f7 100644 (file)
@@ -11,5 +11,5 @@ void test() {
 // CHECK-NEXT:     `-OMPMasterDirective {{.*}} <line:4:9, col:19>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:5:3>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:           |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:           |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           `-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-master.c:4:9) *const restrict'
index 74b15317689147edf0c0bce6680ab777acd02097..0cce4525d6ca845f4b9a8aad0660ab72032a4c19 100644 (file)
@@ -24,7 +24,7 @@ void test_three(int x) {
 // CHECK-NEXT: |   `-OMPOrderedDirective {{.*}} <line:4:9, col:20>
 // CHECK-NEXT: |     `-CapturedStmt {{.*}} <line:5:3>
 // CHECK-NEXT: |       `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT: |         |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT: |         |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT: |         `-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-ordered.c:4:9) *const restrict'
 // CHECK-NEXT: |-FunctionDecl {{.*}} <line:8:1, line:12:1> line:8:6 test_two 'void (int)'
 // CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
@@ -46,7 +46,7 @@ void test_three(int x) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:11:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:11:5> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:9:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-ordered.c:9:9) *const restrict'
 // CHECK-NEXT: |       | `-VarDecl {{.*}} <line:10:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -72,8 +72,8 @@ void test_three(int x) {
 // CHECK-NEXT:         | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT:         | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT:         | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | `-CompoundStmt {{.*}} <col:31, line:18:3>
-// CHECK-NEXT:         | |   `-OMPOrderedDirective {{.*}} <line:17:9, col:35>
+// CHECK-NEXT:         | | `-CompoundStmt {{.*}} <col:31, line:18:3> openmp_structured_block
+// CHECK-NEXT:         | |   `-OMPOrderedDirective {{.*}} <line:17:9, col:35> openmp_standalone_directive
 // CHECK-NEXT:         | |     |-OMPDependClause {{.*}} <col:21, <invalid sloc>>
 // CHECK-NEXT:         | |     `-<<<NULL>>>
 // CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <line:15:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-ordered.c:15:9) *const restrict'
index 1c0b61a70392093f6d44eda936c8da4ae59ac6d5..0c22b9f0bca8607705f5171957f9d55a85d08437 100644 (file)
@@ -54,7 +54,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-parallel-for-simd.c:4:9) *const restrict'
@@ -80,7 +80,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -124,7 +124,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -180,7 +180,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-parallel-for-simd.c:24:9) *const restrict'
@@ -225,7 +225,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index d2cb50ec90d84c776cd01dfc71c41d7e4a8a3f79..bebd54568c802661fd27da877a85e819d1449363 100644 (file)
@@ -54,7 +54,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-parallel-for.c:4:9) *const restrict'
@@ -80,7 +80,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -124,7 +124,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -180,7 +180,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-parallel-for.c:24:9) *const restrict'
@@ -225,7 +225,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 665501d34877255a989c86df33bae56b321185af..92645b74d7c775ede990bca6746e04f390b8c9de 100644 (file)
@@ -18,7 +18,7 @@ void test_one() {
 // CHECK-NEXT: |   `-OMPParallelDirective {{.*}} <line:4:9, col:28>
 // CHECK-NEXT: |     `-CapturedStmt {{.*}} <line:5:3>
 // CHECK-NEXT: |       `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |         |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT: |         |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT: |         |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |         |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |         `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-parallel-master-XFAIL.c:4:9) *const restrict'
@@ -27,7 +27,7 @@ void test_one() {
 // CHECK-NEXT:     `-OMPParallelDirective {{.*}} <line:10:9, col:28>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:11:3, col:7>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |-CompoundStmt {{.*}} <col:3, col:7>
+// CHECK-NEXT:           |-CompoundStmt {{.*}} <col:3, col:7> openmp_structured_block
 // CHECK-NEXT:           | `-NullStmt {{.*}} <col:5>
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
index ce066551ed746af729e741871ac0aad08d4b139f..d5bf5e84b1906d2631d5a8936bc0f513769875a8 100644 (file)
@@ -18,7 +18,7 @@ void test_one() {
 // CHECK-NEXT:     `-OMPParallelSectionsDirective {{.*}} <line:9:9, col:30>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:10:3, col:7>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:           |-CompoundStmt {{.*}} <col:3, col:7>
+// CHECK-NEXT:           |-CompoundStmt {{.*}} <col:3, col:7> openmp_structured_block
 // CHECK-NEXT:           | `-NullStmt {{.*}} <col:5>
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <line:9:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
index 1facb5f4eee01ec8b0de8157b561de5488a091b7..389566b052e74b8a3751f14950537837e9e190bb 100644 (file)
@@ -11,7 +11,7 @@ void test() {
 // CHECK-NEXT:     `-OMPParallelDirective 0x{{.*}} <line:4:9, col:21>
 // CHECK-NEXT:       `-CapturedStmt 0x{{.*}} <line:5:3>
 // CHECK-NEXT:         `-CapturedDecl 0x{{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |-NullStmt 0x{{.*}} <col:3>
+// CHECK-NEXT:           |-NullStmt 0x{{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           |-ImplicitParamDecl 0x{{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |-ImplicitParamDecl 0x{{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:           `-ImplicitParamDecl 0x{{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-parallel.c:4:9) *const restrict'
index 43cae7b1014c3ae3a772e8ba5f49395201112aea..1268a0919d90df0a9d0978621c76b0c2c72294d6 100644 (file)
@@ -14,15 +14,15 @@ void test() {
 // CHECK-NEXT:     `-OMPSectionsDirective {{.*}} <line:4:9, col:21>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:5:3, line:8:3>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:           |-CompoundStmt {{.*}} <line:5:3, line:8:3>
+// CHECK-NEXT:           |-CompoundStmt {{.*}} <line:5:3, line:8:3> openmp_structured_block
 // CHECK-NEXT:           | `-OMPSectionDirective {{.*}} <line:6:9, col:20>
 // CHECK-NEXT:           |   `-CapturedStmt {{.*}} <line:7:5>
 // CHECK-NEXT:           |     `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:           |       |-NullStmt {{.*}} <col:5>
+// CHECK-NEXT:           |       |-NullStmt {{.*}} <col:5> openmp_structured_block
 // CHECK-NEXT:           |       `-ImplicitParamDecl {{.*}} <line:6:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-section.c:6:9) *const restrict'
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-section.c:4:9) *const restrict'
 // CHECK-NEXT:           |-RecordDecl {{.*}} <line:6:9> col:9 implicit struct definition
 // CHECK-NEXT:           | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
 // CHECK-NEXT:           `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:             |-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT:             |-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT:             `-ImplicitParamDecl {{.*}} <line:6:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-section.c:6:9) *const restrict'
index a035ffd6a3e574ccdb555505f6ed1340d94233cd..d932cdd5b48eadf10d3a0359aabb4003e0e1ce42 100644 (file)
@@ -18,6 +18,6 @@ void test_one() {
 // CHECK-NEXT:     `-OMPSectionsDirective {{.*}} <line:9:9, col:21>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:10:3, col:7>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:           |-CompoundStmt {{.*}} <col:3, col:7>
+// CHECK-NEXT:           |-CompoundStmt {{.*}} <col:3, col:7> openmp_structured_block
 // CHECK-NEXT:           | `-NullStmt {{.*}} <col:5>
 // CHECK-NEXT:           `-ImplicitParamDecl {{.*}} <line:9:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-sections.c:9:9) *const restrict'
index 8d8abc401d6df64d582335f59824aa907b6c20da..5ba69e4e7d4860640c222d0ca491b884f847ab98 100644 (file)
@@ -54,7 +54,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-simd.c:4:9) *const restrict'
 // CHECK-NEXT: |       | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -78,7 +78,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -120,7 +120,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -174,7 +174,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-simd.c:24:9) *const restrict'
 // CHECK-NEXT: |       | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -217,7 +217,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 2eb1811e173b299e9801cc92eced92ee560429c1..b0c47b8e9b0e09e3c89cefd7034a6eb621b8e78a 100644 (file)
@@ -11,5 +11,5 @@ void test() {
 // CHECK-NEXT:     `-OMPSingleDirective {{.*}} <line:4:9, col:19>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:5:3>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:           |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:           |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           `-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-single.c:4:9) *const restrict'
index 44780b6a912a185b853629a0902cfeb90b9ab240..230b7be15045a0c0bd6a0f4ac55a0bc184bf6b27 100644 (file)
@@ -14,5 +14,5 @@ void test(int x) {
 // CHECK-NEXT:       | `-DeclRefExpr {{.*}} <col:29> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:5:3>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:           |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:           |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           `-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-data.c:4:9) *const restrict'
index 942968575b00afa4728e9205f3bf3f50dc13ab3e..b1c579b95a1988d5ba2459b0b9495297d8605679 100644 (file)
@@ -9,7 +9,7 @@ void test(int x) {
 // CHECK: `-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-enter-data.c:3:1, line:6:1> line:3:6 test 'void (int)'
 // CHECK-NEXT:   |-ParmVarDecl {{.*}} <col:11, col:15> col:15 used x 'int'
 // CHECK-NEXT:   `-CompoundStmt {{.*}} <col:18, line:6:1>
-// CHECK-NEXT:     `-OMPTargetEnterDataDirective {{.*}} <line:4:9, line:5:39>
+// CHECK-NEXT:     `-OMPTargetEnterDataDirective {{.*}} <line:4:9, line:5:39> openmp_standalone_directive
 // CHECK-NEXT:       |-OMPMapClause {{.*}} <line:4:31, line:5:38>
 // CHECK-NEXT:       | `-DeclRefExpr {{.*}} <col:37> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:4:9>
index ae1b5d6d6f1f76b6752b6d78f80a408c9313784c..55d69715a6d8f720fa2a6c1631eb39543f08feee 100644 (file)
@@ -9,7 +9,7 @@ void test(int x) {
 // CHECK: `-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-exit-data.c:3:1, line:6:1> line:3:6 test 'void (int)'
 // CHECK-NEXT:   |-ParmVarDecl {{.*}} <col:11, col:15> col:15 used x 'int'
 // CHECK-NEXT:   `-CompoundStmt {{.*}} <col:18, line:6:1>
-// CHECK-NEXT:     `-OMPTargetExitDataDirective {{.*}} <line:4:9, line:5:38>
+// CHECK-NEXT:     `-OMPTargetExitDataDirective {{.*}} <line:4:9, line:5:38> openmp_standalone_directive
 // CHECK-NEXT:       |-OMPMapClause {{.*}} <line:4:30, line:5:37>
 // CHECK-NEXT:       | `-DeclRefExpr {{.*}} <col:36> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:4:9>
index bb38b7dd3f13343312493a2c43a65a69774dd073..d3f076aa4638478652818aa87d72be34627b024a 100644 (file)
@@ -60,7 +60,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:9) *const restrict'
@@ -85,7 +85,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:9) *const restrict'
@@ -118,7 +118,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |   | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:9) *const restrict'
@@ -143,7 +143,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |     | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:9) *const restrict'
@@ -176,7 +176,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -218,7 +218,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -268,7 +268,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -310,7 +310,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |     |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -361,7 +361,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -403,7 +403,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -453,7 +453,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -495,7 +495,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |     |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -558,7 +558,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:9) *const restrict'
@@ -600,7 +600,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:9) *const restrict'
@@ -650,7 +650,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |   | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:9) *const restrict'
@@ -692,7 +692,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |     |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:9) *const restrict'
@@ -745,7 +745,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -804,7 +804,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -871,7 +871,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |   | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |   | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -930,7 +930,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |     |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |     |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |     |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |     |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |     |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 0188feb580457b4d7c63c57c71f1e8e6e7293070..aaad0e9c5d8a2ecfad77282a9914865d6da0036a 100644 (file)
@@ -60,7 +60,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for.c:4:9) *const restrict'
@@ -85,7 +85,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for.c:4:9) *const restrict'
@@ -118,7 +118,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |   | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for.c:4:9) *const restrict'
@@ -143,7 +143,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |     | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for.c:4:9) *const restrict'
@@ -176,7 +176,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -218,7 +218,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -268,7 +268,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -310,7 +310,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |     |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -361,7 +361,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -403,7 +403,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -453,7 +453,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -495,7 +495,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |     |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -558,7 +558,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for.c:24:9) *const restrict'
@@ -600,7 +600,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for.c:24:9) *const restrict'
@@ -650,7 +650,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |   | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for.c:24:9) *const restrict'
@@ -692,7 +692,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |     |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel-for.c:24:9) *const restrict'
@@ -745,7 +745,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -804,7 +804,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -871,7 +871,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |   | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |   | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -930,7 +930,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |     |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |     |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |     |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |     |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |     |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 67c668db5eafe4acc4ceec027211e3851d9d8c5f..2a1232df0d26be877943220819ca7b5aed81534b 100644 (file)
@@ -15,7 +15,7 @@ void test() {
 // CHECK-NEXT:           | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT:           |   |-CapturedStmt {{.*}} <col:3>
 // CHECK-NEXT:           |   | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |   |   |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:           |   |   |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           |   |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:           |   |   `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel.c:4:9) *const restrict'
@@ -23,7 +23,7 @@ void test() {
 // CHECK-NEXT:           |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
 // CHECK-NEXT:           |   | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
 // CHECK-NEXT:           |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |     |-NullStmt {{.*}} <line:5:3>
+// CHECK-NEXT:           |     |-NullStmt {{.*}} <line:5:3> openmp_structured_block
 // CHECK-NEXT:           |     |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:           |     `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel.c:4:9) *const restrict'
@@ -39,7 +39,7 @@ void test() {
 // CHECK-NEXT:           `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT:             |-CapturedStmt {{.*}} <line:5:3>
 // CHECK-NEXT:             | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:             |   |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:             |   |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:             |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:             |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:             |   `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel.c:4:9) *const restrict'
@@ -47,7 +47,7 @@ void test() {
 // CHECK-NEXT:             |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
 // CHECK-NEXT:             | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
 // CHECK-NEXT:             `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:               |-NullStmt {{.*}} <line:5:3>
+// CHECK-NEXT:               |-NullStmt {{.*}} <line:5:3> openmp_structured_block
 // CHECK-NEXT:               |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:               |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:               `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-parallel.c:4:9) *const restrict'
index cb2eb58abcaa2b5832eec03c7f79f31c15057410..430d6b2ca4bd3ed47bea71b07cd2b54e3c3ba32b 100644 (file)
@@ -58,7 +58,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-simd.c:4:9) *const restrict'
 // CHECK-NEXT: |       | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -87,7 +87,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-simd.c:4:9) *const restrict'
 // CHECK-NEXT: |       |   `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       |     `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -116,7 +116,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -162,7 +162,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -209,7 +209,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -255,7 +255,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -314,7 +314,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-simd.c:24:9) *const restrict'
 // CHECK-NEXT: |       | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -360,7 +360,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-simd.c:24:9) *const restrict'
 // CHECK-NEXT: |       |   |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
 // CHECK-NEXT: |       |   | `-IntegerLiteral {{.*}} <col:16> 'int' 0
@@ -409,7 +409,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -472,7 +472,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 4c9882dd2b3061a1c4f66fec0a611524c676db6f..20e326764fcceeac092c85287f3fb3c09c3a31e3 100644 (file)
@@ -62,7 +62,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | | | | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -91,7 +91,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | |   | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | | | |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -120,7 +120,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | |   | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -149,7 +149,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |     | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | |     | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -186,7 +186,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |   | | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -215,7 +215,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | |   | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |   | |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -244,7 +244,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |     | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -273,7 +273,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |       | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |       | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -310,7 +310,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -356,7 +356,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -402,7 +402,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -448,7 +448,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | |     |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -502,7 +502,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |   | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -548,7 +548,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |   | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -594,7 +594,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |     | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |     | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -640,7 +640,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |       |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |       |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -695,7 +695,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -741,7 +741,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -787,7 +787,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -833,7 +833,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | |     |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -887,7 +887,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |   | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -933,7 +933,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |   | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -979,7 +979,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |     | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |     | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1025,7 +1025,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |       |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |       |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1092,7 +1092,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | | | | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1138,7 +1138,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | |   |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | | | |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1184,7 +1184,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | |   | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1230,7 +1230,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |     |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | |     |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1284,7 +1284,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |   | | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1330,7 +1330,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | |   |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |   | |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1376,7 +1376,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |     | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |     | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1422,7 +1422,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |       |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |       |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |       |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |       |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |       |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1479,7 +1479,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | | | | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | | | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1542,7 +1542,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | | | |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | | | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1605,7 +1605,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | |   | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | |   | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | |   | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1668,7 +1668,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | |     |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | |     |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | |     |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | |     |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | |     |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1739,7 +1739,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |   | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |   | | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |   | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1802,7 +1802,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |   | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |   | |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |   | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1865,7 +1865,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |     | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |     | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |     | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |     | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |     | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |     | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |     | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |     | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1928,7 +1928,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |       |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |       |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |       |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |       |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |       |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |       |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |       |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |       |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 65537d46a28b0d1cb0ef162b30099f777a1d13c1..4e2696716d3f7e217154a87ac666f07596617a22 100644 (file)
@@ -62,7 +62,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | | | | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -91,7 +91,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | |   | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | | | |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -120,7 +120,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | |   | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -149,7 +149,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |     | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | |     | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -186,7 +186,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |   | | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -215,7 +215,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | |   | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |   | |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -244,7 +244,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |     | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -273,7 +273,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |       | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |       | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -310,7 +310,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -356,7 +356,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -402,7 +402,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -448,7 +448,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | |     |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -502,7 +502,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |   | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -548,7 +548,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |   | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -594,7 +594,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |     | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |     | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -640,7 +640,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |       |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |       |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -695,7 +695,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -741,7 +741,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -787,7 +787,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -833,7 +833,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | |     |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -887,7 +887,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |   | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -933,7 +933,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |   | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -979,7 +979,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |     | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |     | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1025,7 +1025,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |       |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |       |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1092,7 +1092,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | | | | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1138,7 +1138,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | |   |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | | | |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1184,7 +1184,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | |   | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1230,7 +1230,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |     |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | |     |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1284,7 +1284,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |   | | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1330,7 +1330,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | |   |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |   | |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1376,7 +1376,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |     | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |     | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1422,7 +1422,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |       |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |       |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |       |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |       |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |       |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1479,7 +1479,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | | | | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | | | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1542,7 +1542,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | | | |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | | | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1605,7 +1605,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | |   | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | |   | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | |   | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1668,7 +1668,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | |     |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | |     |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | |     |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | |     |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | |     |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1739,7 +1739,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |   | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |   | | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |   | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1802,7 +1802,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |   | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |   | |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |   | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1865,7 +1865,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |     | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |     | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |     | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |     | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |     | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |     | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |     | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |     | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1928,7 +1928,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |       |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |       |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |       |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |       |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |       |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |       |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |       |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |       |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 94ceb77745b8d3746dd25d9d51c45bf0a5c49086..d738ce8f2b47e1dcd83d1c04ec318a52c2016c5e 100644 (file)
@@ -60,7 +60,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:9) *const restrict'
@@ -85,7 +85,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:9) *const restrict'
@@ -118,7 +118,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |   | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:9) *const restrict'
@@ -143,7 +143,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |     | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:9) *const restrict'
@@ -176,7 +176,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -218,7 +218,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -268,7 +268,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -310,7 +310,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |     |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -361,7 +361,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -403,7 +403,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -453,7 +453,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -495,7 +495,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |     |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -558,7 +558,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:9) *const restrict'
@@ -600,7 +600,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:9) *const restrict'
@@ -650,7 +650,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |   | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:9) *const restrict'
@@ -692,7 +692,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |     |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:9) *const restrict'
@@ -745,7 +745,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -804,7 +804,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -871,7 +871,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |   | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |   | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -930,7 +930,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |     |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |     |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |     |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |     |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |     |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 8f8a4f7869705825cb6e96d5697a8066d4b7b9f4..e83e80e534d896fcf4d18b1fe62089c12c17a447 100644 (file)
@@ -60,7 +60,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:9) *const restrict'
@@ -85,7 +85,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:9) *const restrict'
@@ -118,7 +118,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |   | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:9) *const restrict'
@@ -143,7 +143,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       |     | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:9) *const restrict'
@@ -176,7 +176,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -218,7 +218,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -268,7 +268,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -310,7 +310,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       |     |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -361,7 +361,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -403,7 +403,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -453,7 +453,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -495,7 +495,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       |     | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       |     |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -558,7 +558,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:9) *const restrict'
@@ -600,7 +600,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | |   |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | | |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:9) *const restrict'
@@ -650,7 +650,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |   | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:9) *const restrict'
@@ -692,7 +692,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |     |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       |     |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:9) *const restrict'
@@ -745,7 +745,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -804,7 +804,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | | |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -871,7 +871,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |   | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |   | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -930,7 +930,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |     |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         |     |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         |     |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         |     |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |     |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index eb3bafa62d1c9bf6495223305e43d8c17b3bf520..6d3d60ca7a1bedb1c2eaff18c82700ca951cceed 100644 (file)
@@ -15,7 +15,7 @@ void test() {
 // CHECK-NEXT:           | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT:           |   |-CapturedStmt {{.*}} <col:3>
 // CHECK-NEXT:           |   | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |   |   |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:           |   |   |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           |   |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:           |   |   `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams.c:4:9) *const restrict'
@@ -23,7 +23,7 @@ void test() {
 // CHECK-NEXT:           |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
 // CHECK-NEXT:           |   | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
 // CHECK-NEXT:           |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |     |-NullStmt {{.*}} <line:5:3>
+// CHECK-NEXT:           |     |-NullStmt {{.*}} <line:5:3> openmp_structured_block
 // CHECK-NEXT:           |     |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:           |     `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams.c:4:9) *const restrict'
@@ -39,7 +39,7 @@ void test() {
 // CHECK-NEXT:           `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT:             |-CapturedStmt {{.*}} <line:5:3>
 // CHECK-NEXT:             | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:             |   |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:             |   |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:             |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:             |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:             |   `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams.c:4:9) *const restrict'
@@ -47,7 +47,7 @@ void test() {
 // CHECK-NEXT:             |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
 // CHECK-NEXT:             | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
 // CHECK-NEXT:             `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:               |-NullStmt {{.*}} <line:5:3>
+// CHECK-NEXT:               |-NullStmt {{.*}} <line:5:3> openmp_structured_block
 // CHECK-NEXT:               |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:               |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:               `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams.c:4:9) *const restrict'
index 07b0da8afad5e5f191cea4e0d6871658f59d57dd..f1ca902213c75a01ff9b315bd6d7a6c60bdeea4f 100644 (file)
@@ -8,7 +8,7 @@ void test(int x) {
 // CHECK: `-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-update.c:3:1, line:5:1> line:3:6 test 'void (int)'
 // CHECK-NEXT:   |-ParmVarDecl {{.*}} <col:11, col:15> col:15 used x 'int'
 // CHECK-NEXT:   `-CompoundStmt {{.*}} <col:18, line:5:1>
-// CHECK-NEXT:     `-OMPTargetUpdateDirective {{.*}} <line:4:9, col:32>
+// CHECK-NEXT:     `-OMPTargetUpdateDirective {{.*}} <line:4:9, col:32> openmp_standalone_directive
 // CHECK-NEXT:       |-OMPToClause {{.*}} <col:27, col:31>
 // CHECK-NEXT:       | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <col:9>
index a81c561d94114abf8e2cdb5c9c6150f33173a58c..b0f219e1d863632c0cb38c80852729f2bc4e93d4 100644 (file)
@@ -13,7 +13,7 @@ void test() {
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT:           |-CapturedStmt {{.*}} <col:3>
 // CHECK-NEXT:           | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |   |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:           |   |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           |   `-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target.c:4:9) *const restrict'
 // CHECK-NEXT:           |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .global_tid. 'const int'
@@ -25,5 +25,5 @@ void test() {
 // CHECK-NEXT:           |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
 // CHECK-NEXT:           | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
 // CHECK-NEXT:           `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:             |-NullStmt {{.*}} <line:5:3>
+// CHECK-NEXT:             |-NullStmt {{.*}} <line:5:3> openmp_structured_block
 // CHECK-NEXT:             `-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target.c:4:9) *const restrict'
index 2c5660a2e9d5ed6405c33cbdfdecad8cd0e9cba2..3a2dc25f265c6a2152ba2f08cf3edf42834146dc 100644 (file)
@@ -11,7 +11,7 @@ void test() {
 // CHECK-NEXT:     `-OMPTaskDirective {{.*}} <line:4:9, col:17>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:5:3>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:           |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int'
 // CHECK-NEXT:           |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .part_id. 'const int *const restrict'
index fe05369a48a5767e5f3832a0d31941613dfc9b0f..616f1ed9b9fdefdb22dd7d7991f3c372d2a98bd1 100644 (file)
@@ -11,5 +11,5 @@ void test() {
 // CHECK-NEXT:     `-OMPTaskgroupDirective {{.*}} <line:4:9, col:22>
 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:5:3>
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT:           |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:           |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           `-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-taskgroup.c:4:9) *const restrict'
index cf05ba9a21b28df940e0349b476318f61cce38be..6e6d11fc9403140505e986cbc50230a7fb9ca144 100644 (file)
@@ -56,7 +56,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .part_id. 'const int *const restrict'
@@ -94,7 +94,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -150,7 +150,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -218,7 +218,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .part_id. 'const int *const restrict'
@@ -276,7 +276,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 1e626f87e8d65369fe657c4f4a855d9cc2f089e2..ca831625844be6470d3f7e8ecc11e2c3201fd3cb 100644 (file)
@@ -56,7 +56,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5>
+// CHECK-NEXT: |       | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
 // CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .part_id. 'const int *const restrict'
@@ -94,7 +94,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:12:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -150,7 +150,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK-NEXT: |       | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
 // CHECK-NEXT: |       | |   |-DeclStmt {{.*}} <line:19:10, col:19>
 // CHECK-NEXT: |       | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -218,7 +218,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7>
+// CHECK-NEXT: |       | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
 // CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int'
 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .part_id. 'const int *const restrict'
@@ -276,7 +276,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK-NEXT:         | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
 // CHECK-NEXT:         | |     |-DeclStmt {{.*}} <line:34:12, col:21>
 // CHECK-NEXT:         | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 74674917d90a8e3307c60e37e2312a7b9c3faa6d..3e3e0479835d5c6e340565e05e650f115ca7f751 100644 (file)
@@ -7,4 +7,4 @@ void test() {
 // CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
 // CHECK: `-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-taskwait.c:3:1, line:5:1> line:3:6 test 'void ()'
 // CHECK-NEXT:   `-CompoundStmt {{.*}} <col:13, line:5:1>
-// CHECK-NEXT:     `-OMPTaskwaitDirective {{.*}} <line:4:9, col:21>
+// CHECK-NEXT:     `-OMPTaskwaitDirective {{.*}} <line:4:9, col:21> openmp_standalone_directive
index 5b900950fb7d0296f92485522ed03f47cf5c564b..a316d7ef625c35bbfe524d2f384fbecad5db8c00 100644 (file)
@@ -7,4 +7,4 @@ void test() {
 // CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
 // CHECK: `-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-taskyield.c:3:1, line:5:1> line:3:6 test 'void ()'
 // CHECK-NEXT:   `-CompoundStmt {{.*}} <col:13, line:5:1>
-// CHECK-NEXT:     `-OMPTaskyieldDirective {{.*}} <line:4:9, col:22>
+// CHECK-NEXT:     `-OMPTaskyieldDirective {{.*}} <line:4:9, col:22> openmp_standalone_directive
index e88cfa319ba47e27c47a3515c0619b0b268ea69a..5e019f9e89eb154556e6f388483fddd998566248 100644 (file)
@@ -40,7 +40,7 @@ void test_five(int x, int y, int z) {
         ;
 }
 
-// CHECK:TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
 // CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:3:1, line:8:1> line:3:6 test_one 'void (int)'
 // CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
 // CHECK-NEXT: | `-CompoundStmt {{.*}} <col:22, line:8:1>
@@ -51,7 +51,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:47>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:9, col:47>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:9, col:47> openmp_structured_block
 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | | | |   | |-CapturedStmt {{.*}} <line:6:3, line:7:5>
@@ -68,7 +68,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | |   | | | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -96,7 +96,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   |   | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | |   |   | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -124,7 +124,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | | | | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -152,7 +152,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | |   | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -190,7 +190,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:5:9, col:47>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:5:9, col:47> openmp_structured_block
 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       |   |   | |-CapturedStmt {{.*}} <line:6:3, line:7:5>
@@ -207,7 +207,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   |   | | | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -235,7 +235,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   |   | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   |   |   | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -263,7 +263,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   | | | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -291,7 +291,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   |   | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -329,7 +329,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:47>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:9, col:47>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:9, col:47> openmp_structured_block
 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | | | |   | |-CapturedStmt {{.*}} <line:13:3, line:15:7>
@@ -346,7 +346,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -390,7 +390,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -434,7 +434,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -478,7 +478,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | |   | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -533,7 +533,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:12:9, col:47>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:12:9, col:47> openmp_structured_block
 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       |   |   | |-CapturedStmt {{.*}} <line:13:3, line:15:7>
@@ -550,7 +550,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -594,7 +594,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -638,7 +638,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -682,7 +682,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -735,7 +735,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:59>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:9, col:59>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:9, col:59> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
 // CHECK-NEXT: |       | | | | | `-ConstantExpr {{.*}} <col:57> 'int'
 // CHECK-NEXT: |       | | | | |   `-IntegerLiteral {{.*}} <col:57> 'int' 1
@@ -755,7 +755,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -799,7 +799,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -843,7 +843,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -887,7 +887,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | |   | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -942,7 +942,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:20:9, col:59>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:20:9, col:59> openmp_structured_block
 // CHECK-NEXT: |       |   | |-OMPCollapseClause {{.*}} <col:48, col:58>
 // CHECK-NEXT: |       |   | | `-ConstantExpr {{.*}} <col:57> 'int'
 // CHECK-NEXT: |       |   | |   `-IntegerLiteral {{.*}} <col:57> 'int' 1
@@ -962,7 +962,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1006,7 +1006,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1050,7 +1050,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1094,7 +1094,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1147,7 +1147,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:59>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:9, col:59>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:9, col:59> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
 // CHECK-NEXT: |       | | | | | `-ConstantExpr {{.*}} <col:57> 'int'
 // CHECK-NEXT: |       | | | | |   `-IntegerLiteral {{.*}} <col:57> 'int' 2
@@ -1179,7 +1179,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | |   | | | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1223,7 +1223,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   |   |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | |   |   |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1267,7 +1267,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | | | | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1311,7 +1311,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | |   |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1372,7 +1372,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:28:9, col:59>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:28:9, col:59> openmp_structured_block
 // CHECK-NEXT: |       |   | |-OMPCollapseClause {{.*}} <col:48, col:58>
 // CHECK-NEXT: |       |   | | `-ConstantExpr {{.*}} <col:57> 'int'
 // CHECK-NEXT: |       |   | |   `-IntegerLiteral {{.*}} <col:57> 'int' 2
@@ -1404,7 +1404,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   |   | | | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1448,7 +1448,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   |   |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   |   |   |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1492,7 +1492,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   | | | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1536,7 +1536,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   |   |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1597,7 +1597,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT:         | |-CapturedStmt {{.*}} <col:9, col:59>
 // CHECK-NEXT:         | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:         | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:9, col:59>
+// CHECK-NEXT:         | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:9, col:59> openmp_structured_block
 // CHECK-NEXT:         | | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
 // CHECK-NEXT:         | | | | | `-ConstantExpr {{.*}} <col:57> 'int'
 // CHECK-NEXT:         | | | | |   `-IntegerLiteral {{.*}} <col:57> 'int' 2
@@ -1629,7 +1629,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | |   | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | |   | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | |   | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1689,7 +1689,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | |   |   |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | |   |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | |   |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1749,7 +1749,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1809,7 +1809,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | |   |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | |   |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | |   |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1887,7 +1887,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int'
 // CHECK-NEXT:         | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT:         | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:         |   |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:36:9, col:59>
+// CHECK-NEXT:         |   |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:36:9, col:59> openmp_structured_block
 // CHECK-NEXT:         |   | |-OMPCollapseClause {{.*}} <col:48, col:58>
 // CHECK-NEXT:         |   | | `-ConstantExpr {{.*}} <col:57> 'int'
 // CHECK-NEXT:         |   | |   `-IntegerLiteral {{.*}} <col:57> 'int' 2
@@ -1919,7 +1919,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   |   | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   |   | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   |   | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1979,7 +1979,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   |   |   |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   |   |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   |   |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -2039,7 +2039,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -2099,7 +2099,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   |   |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index d49ecb845129063a0d71cb75b2889d678aae1ffd..be7ed22b5af2bf223ddd70006fb4b9cfb8b5a6c4 100644 (file)
@@ -51,7 +51,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:42>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:9, col:42>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:9, col:42> openmp_structured_block
 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | | | |   | |-CapturedStmt {{.*}} <line:6:3, line:7:5>
@@ -68,7 +68,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | |   | | | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -96,7 +96,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   |   | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | |   |   | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -124,7 +124,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | | | | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -152,7 +152,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | |   | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -190,7 +190,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForDirective {{.*}} <line:5:9, col:42>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForDirective {{.*}} <line:5:9, col:42> openmp_structured_block
 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       |   |   | |-CapturedStmt {{.*}} <line:6:3, line:7:5>
@@ -207,7 +207,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   |   | | | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -235,7 +235,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   |   | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   |   |   | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -263,7 +263,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   | | | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -291,7 +291,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   |   | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -329,7 +329,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:42>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:9, col:42>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:9, col:42> openmp_structured_block
 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | | | |   | |-CapturedStmt {{.*}} <line:13:3, line:15:7>
@@ -346,7 +346,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -390,7 +390,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -434,7 +434,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -478,7 +478,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | |   | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -533,7 +533,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForDirective {{.*}} <line:12:9, col:42>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForDirective {{.*}} <line:12:9, col:42> openmp_structured_block
 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       |   |   | |-CapturedStmt {{.*}} <line:13:3, line:15:7>
@@ -550,7 +550,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -594,7 +594,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -638,7 +638,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   | | | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -682,7 +682,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   |   | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -735,7 +735,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:54>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:9, col:54>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:9, col:54> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-OMPCollapseClause {{.*}} <col:43, col:53>
 // CHECK-NEXT: |       | | | | | `-ConstantExpr {{.*}} <col:52> 'int'
 // CHECK-NEXT: |       | | | | |   `-IntegerLiteral {{.*}} <col:52> 'int' 1
@@ -755,7 +755,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -799,7 +799,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -843,7 +843,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -887,7 +887,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | |   | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -942,7 +942,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForDirective {{.*}} <line:20:9, col:54>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForDirective {{.*}} <line:20:9, col:54> openmp_structured_block
 // CHECK-NEXT: |       |   | |-OMPCollapseClause {{.*}} <col:43, col:53>
 // CHECK-NEXT: |       |   | | `-ConstantExpr {{.*}} <col:52> 'int'
 // CHECK-NEXT: |       |   | |   `-IntegerLiteral {{.*}} <col:52> 'int' 1
@@ -962,7 +962,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1006,7 +1006,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1050,7 +1050,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   | | | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1094,7 +1094,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   |   | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -1147,7 +1147,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:54>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:9, col:54>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:9, col:54> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-OMPCollapseClause {{.*}} <col:43, col:53>
 // CHECK-NEXT: |       | | | | | `-ConstantExpr {{.*}} <col:52> 'int'
 // CHECK-NEXT: |       | | | | |   `-IntegerLiteral {{.*}} <col:52> 'int' 2
@@ -1179,7 +1179,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | |   | | | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1223,7 +1223,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   |   |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | |   |   |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1267,7 +1267,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | | | | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1311,7 +1311,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | |   |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1372,7 +1372,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForDirective {{.*}} <line:28:9, col:54>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeParallelForDirective {{.*}} <line:28:9, col:54> openmp_structured_block
 // CHECK-NEXT: |       |   | |-OMPCollapseClause {{.*}} <col:43, col:53>
 // CHECK-NEXT: |       |   | | `-ConstantExpr {{.*}} <col:52> 'int'
 // CHECK-NEXT: |       |   | |   `-IntegerLiteral {{.*}} <col:52> 'int' 2
@@ -1404,7 +1404,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   |   | | | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1448,7 +1448,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   |   |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   |   |   |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1492,7 +1492,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   | | | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1536,7 +1536,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   |   |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
@@ -1597,7 +1597,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT:         | |-CapturedStmt {{.*}} <col:9, col:54>
 // CHECK-NEXT:         | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:         | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:9, col:54>
+// CHECK-NEXT:         | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:9, col:54> openmp_structured_block
 // CHECK-NEXT:         | | | | |-OMPCollapseClause {{.*}} <col:43, col:53>
 // CHECK-NEXT:         | | | | | `-ConstantExpr {{.*}} <col:52> 'int'
 // CHECK-NEXT:         | | | | |   `-IntegerLiteral {{.*}} <col:52> 'int' 2
@@ -1629,7 +1629,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | |   | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | |   | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | |   | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1689,7 +1689,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | |   |   |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | |   |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | |   |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1749,7 +1749,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1809,7 +1809,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | |   |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | |   |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | |   |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1887,7 +1887,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int'
 // CHECK-NEXT:         | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT:         | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:         |   |-OMPTeamsDistributeParallelForDirective {{.*}} <line:36:9, col:54>
+// CHECK-NEXT:         |   |-OMPTeamsDistributeParallelForDirective {{.*}} <line:36:9, col:54> openmp_structured_block
 // CHECK-NEXT:         |   | |-OMPCollapseClause {{.*}} <col:43, col:53>
 // CHECK-NEXT:         |   | | `-ConstantExpr {{.*}} <col:52> 'int'
 // CHECK-NEXT:         |   | |   `-IntegerLiteral {{.*}} <col:52> 'int' 2
@@ -1919,7 +1919,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   |   | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   |   | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   |   | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1979,7 +1979,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   |   |   |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   |   |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   |   |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -2039,7 +2039,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -2099,7 +2099,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   |   |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   |   |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 39e36e9e48dbbe11fa3863b2960531dcb95dc495..1b45d0f322537c4cf9b1e0c4ba7fc94c722f8207 100644 (file)
@@ -51,7 +51,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:34>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:9, col:34>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:9, col:34> openmp_structured_block
 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | | | |   | |-ForStmt {{.*}} <line:6:3, line:7:5>
@@ -66,7 +66,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | |   | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute-simd.c:5:9) *const restrict'
@@ -90,7 +90,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute-simd.c:5:9) *const restrict'
@@ -126,7 +126,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeSimdDirective {{.*}} <line:5:9, col:34>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeSimdDirective {{.*}} <line:5:9, col:34> openmp_structured_block
 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       |   |   | |-ForStmt {{.*}} <line:6:3, line:7:5>
@@ -141,7 +141,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   |   | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute-simd.c:5:9) *const restrict'
@@ -165,7 +165,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute-simd.c:5:9) *const restrict'
@@ -201,7 +201,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:34>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:9, col:34>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:9, col:34> openmp_structured_block
 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | | | |   | |-ForStmt {{.*}} <line:13:3, line:15:7>
@@ -216,7 +216,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -256,7 +256,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -309,7 +309,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeSimdDirective {{.*}} <line:12:9, col:34>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeSimdDirective {{.*}} <line:12:9, col:34> openmp_structured_block
 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       |   |   | |-ForStmt {{.*}} <line:13:3, line:15:7>
@@ -324,7 +324,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -364,7 +364,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -415,7 +415,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:46>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:9, col:46>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:9, col:46> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-OMPCollapseClause {{.*}} <col:35, col:45>
 // CHECK-NEXT: |       | | | | | `-ConstantExpr {{.*}} <col:44> 'int'
 // CHECK-NEXT: |       | | | | |   `-IntegerLiteral {{.*}} <col:44> 'int' 1
@@ -433,7 +433,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -473,7 +473,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -526,7 +526,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeSimdDirective {{.*}} <line:20:9, col:46>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeSimdDirective {{.*}} <line:20:9, col:46> openmp_structured_block
 // CHECK-NEXT: |       |   | |-OMPCollapseClause {{.*}} <col:35, col:45>
 // CHECK-NEXT: |       |   | | `-ConstantExpr {{.*}} <col:44> 'int'
 // CHECK-NEXT: |       |   | |   `-IntegerLiteral {{.*}} <col:44> 'int' 1
@@ -544,7 +544,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -584,7 +584,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -635,7 +635,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:46>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:9, col:46>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:9, col:46> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-OMPCollapseClause {{.*}} <col:35, col:45>
 // CHECK-NEXT: |       | | | | | `-ConstantExpr {{.*}} <col:44> 'int'
 // CHECK-NEXT: |       | | | | |   `-IntegerLiteral {{.*}} <col:44> 'int' 2
@@ -665,7 +665,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | |   | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute-simd.c:28:9) *const restrict'
@@ -705,7 +705,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute-simd.c:28:9) *const restrict'
@@ -764,7 +764,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeSimdDirective {{.*}} <line:28:9, col:46>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeSimdDirective {{.*}} <line:28:9, col:46> openmp_structured_block
 // CHECK-NEXT: |       |   | |-OMPCollapseClause {{.*}} <col:35, col:45>
 // CHECK-NEXT: |       |   | | `-ConstantExpr {{.*}} <col:44> 'int'
 // CHECK-NEXT: |       |   | |   `-IntegerLiteral {{.*}} <col:44> 'int' 2
@@ -794,7 +794,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   |   | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute-simd.c:28:9) *const restrict'
@@ -834,7 +834,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute-simd.c:28:9) *const restrict'
@@ -893,7 +893,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT:         | |-CapturedStmt {{.*}} <col:9, col:46>
 // CHECK-NEXT:         | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:         | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:9, col:46>
+// CHECK-NEXT:         | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:9, col:46> openmp_structured_block
 // CHECK-NEXT:         | | | | |-OMPCollapseClause {{.*}} <col:35, col:45>
 // CHECK-NEXT:         | | | | | `-ConstantExpr {{.*}} <col:44> 'int'
 // CHECK-NEXT:         | | | | |   `-IntegerLiteral {{.*}} <col:44> 'int' 2
@@ -923,7 +923,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | |   | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | |   | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | |   | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -979,7 +979,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1055,7 +1055,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int'
 // CHECK-NEXT:         | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT:         | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:         |   |-OMPTeamsDistributeSimdDirective {{.*}} <line:36:9, col:46>
+// CHECK-NEXT:         |   |-OMPTeamsDistributeSimdDirective {{.*}} <line:36:9, col:46> openmp_structured_block
 // CHECK-NEXT:         |   | |-OMPCollapseClause {{.*}} <col:35, col:45>
 // CHECK-NEXT:         |   | | `-ConstantExpr {{.*}} <col:44> 'int'
 // CHECK-NEXT:         |   | |   `-IntegerLiteral {{.*}} <col:44> 'int' 2
@@ -1085,7 +1085,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   |   | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   |   | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   |   | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1141,7 +1141,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index fffc3178e6861019fc5fc5ef4231f25dcee531cd..593e844d03bd840bd34b207df26f194fe7051446 100644 (file)
@@ -51,7 +51,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:29>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:9, col:29>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:9, col:29> openmp_structured_block
 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | | | |   | |-ForStmt {{.*}} <line:6:3, line:7:5>
@@ -66,7 +66,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | |   | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:5:9) *const restrict'
@@ -90,7 +90,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       | | | | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:5:9) *const restrict'
@@ -126,7 +126,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:5:9, col:29>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:5:9, col:29> openmp_structured_block
 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       |   |   | |-ForStmt {{.*}} <line:6:3, line:7:5>
@@ -141,7 +141,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   |   | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:5:9) *const restrict'
@@ -165,7 +165,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | `-NullStmt {{.*}} <line:7:5>
+// CHECK-NEXT: |       |   | | `-NullStmt {{.*}} <line:7:5> openmp_structured_block
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:5:9) *const restrict'
@@ -201,7 +201,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:29>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:9, col:29>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:9, col:29> openmp_structured_block
 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | | | |   | |-ForStmt {{.*}} <line:13:3, line:15:7>
@@ -216,7 +216,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -256,7 +256,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -309,7 +309,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:12:9, col:29>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:12:9, col:29> openmp_structured_block
 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       |   |   | |-ForStmt {{.*}} <line:13:3, line:15:7>
@@ -324,7 +324,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -364,7 +364,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:14:5, line:15:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |-DeclStmt {{.*}} <line:14:10, col:19>
 // CHECK-NEXT: |       |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -415,7 +415,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:41>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:9, col:41>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:9, col:41> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
 // CHECK-NEXT: |       | | | | | `-ConstantExpr {{.*}} <col:39> 'int'
 // CHECK-NEXT: |       | | | | |   `-IntegerLiteral {{.*}} <col:39> 'int' 1
@@ -433,7 +433,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -473,7 +473,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -526,7 +526,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:20:9, col:41>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:20:9, col:41> openmp_structured_block
 // CHECK-NEXT: |       |   | |-OMPCollapseClause {{.*}} <col:30, col:40>
 // CHECK-NEXT: |       |   | | `-ConstantExpr {{.*}} <col:39> 'int'
 // CHECK-NEXT: |       |   | |   `-IntegerLiteral {{.*}} <col:39> 'int' 1
@@ -544,7 +544,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -584,7 +584,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
 // CHECK-NEXT: |       |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
 // CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:22:5, line:23:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |   |-DeclStmt {{.*}} <line:22:10, col:19>
 // CHECK-NEXT: |       |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
 // CHECK-NEXT: |       |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
@@ -635,7 +635,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:9, col:41>
 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:9, col:41>
+// CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:9, col:41> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
 // CHECK-NEXT: |       | | | | | `-ConstantExpr {{.*}} <col:39> 'int'
 // CHECK-NEXT: |       | | | | |   `-IntegerLiteral {{.*}} <col:39> 'int' 2
@@ -665,7 +665,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | |   | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | |   | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:28:9) *const restrict'
@@ -705,7 +705,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       | | | | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       | | | | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:28:9) *const restrict'
@@ -764,7 +764,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int'
 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:28:9, col:41>
+// CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:28:9, col:41> openmp_structured_block
 // CHECK-NEXT: |       |   | |-OMPCollapseClause {{.*}} <col:30, col:40>
 // CHECK-NEXT: |       |   | | `-ConstantExpr {{.*}} <col:39> 'int'
 // CHECK-NEXT: |       |   | |   `-IntegerLiteral {{.*}} <col:39> 'int' 2
@@ -794,7 +794,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   |   | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   |   | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:28:9) *const restrict'
@@ -834,7 +834,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT: |       |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT: |       |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT: |       |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: |       |   | |   `-NullStmt {{.*}} <line:31:7>
+// CHECK-NEXT: |       |   | |   `-NullStmt {{.*}} <line:31:7> openmp_structured_block
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <line:28:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:28:9) *const restrict'
@@ -893,7 +893,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT:         | |-CapturedStmt {{.*}} <col:9, col:41>
 // CHECK-NEXT:         | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:         | | | |-OMPTeamsDistributeDirective {{.*}} <col:9, col:41>
+// CHECK-NEXT:         | | | |-OMPTeamsDistributeDirective {{.*}} <col:9, col:41> openmp_structured_block
 // CHECK-NEXT:         | | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
 // CHECK-NEXT:         | | | | | `-ConstantExpr {{.*}} <col:39> 'int'
 // CHECK-NEXT:         | | | | |   `-IntegerLiteral {{.*}} <col:39> 'int' 2
@@ -923,7 +923,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | |   | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | |   | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | |   | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -979,7 +979,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         | | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         | | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         | | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1055,7 +1055,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int'
 // CHECK-NEXT:         | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
 // CHECK-NEXT:         | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:         |   |-OMPTeamsDistributeDirective {{.*}} <line:36:9, col:41>
+// CHECK-NEXT:         |   |-OMPTeamsDistributeDirective {{.*}} <line:36:9, col:41> openmp_structured_block
 // CHECK-NEXT:         |   | |-OMPCollapseClause {{.*}} <col:30, col:40>
 // CHECK-NEXT:         |   | | `-ConstantExpr {{.*}} <col:39> 'int'
 // CHECK-NEXT:         |   | |   `-IntegerLiteral {{.*}} <col:39> 'int' 2
@@ -1085,7 +1085,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   |   | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   |   | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   |   | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
@@ -1141,7 +1141,7 @@ void test_five(int x, int y, int z) {
 // CHECK-NEXT:         |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
 // CHECK-NEXT:         |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
 // CHECK-NEXT:         |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT:         |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK-NEXT:         |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9> openmp_structured_block
 // CHECK-NEXT:         |   | |     |-DeclStmt {{.*}} <line:39:12, col:21>
 // CHECK-NEXT:         |   | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
 // CHECK-NEXT:         |   | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
index 156849a9dd2ad6d297281af9c0c1e016be3749d8..038af5fdc4720e91d53bc306b9bc0f582e31f792 100644 (file)
@@ -14,10 +14,10 @@ void test() {
 // CHECK-NEXT:         `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT:           |-CapturedStmt {{.*}} <col:9, col:18>
 // CHECK-NEXT:           | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |   |-OMPTeamsDirective {{.*}} <col:9, col:18>
+// CHECK-NEXT:           |   |-OMPTeamsDirective {{.*}} <col:9, col:18> openmp_structured_block
 // CHECK-NEXT:           |   | `-CapturedStmt {{.*}} <line:6:3>
 // CHECK-NEXT:           |   |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |   |     |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:           |   |     |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:           |   |     |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |   |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:           |   |     `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams.c:5:9) *const restrict'
@@ -25,7 +25,7 @@ void test() {
 // CHECK-NEXT:           |   |-RecordDecl {{.*}} <line:5:9> col:9 implicit struct definition
 // CHECK-NEXT:           |   | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
 // CHECK-NEXT:           |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:           |     |-NullStmt {{.*}} <line:6:3>
+// CHECK-NEXT:           |     |-NullStmt {{.*}} <line:6:3> openmp_structured_block
 // CHECK-NEXT:           |     |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:           |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:           |     `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams.c:5:9) *const restrict'
@@ -39,10 +39,10 @@ void test() {
 // CHECK-NEXT:           |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
 // CHECK-NEXT:           | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
 // CHECK-NEXT:           `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:             |-OMPTeamsDirective {{.*}} <line:5:9, col:18>
+// CHECK-NEXT:             |-OMPTeamsDirective {{.*}} <line:5:9, col:18> openmp_structured_block
 // CHECK-NEXT:             | `-CapturedStmt {{.*}} <line:6:3>
 // CHECK-NEXT:             |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:             |     |-NullStmt {{.*}} <col:3>
+// CHECK-NEXT:             |     |-NullStmt {{.*}} <col:3> openmp_structured_block
 // CHECK-NEXT:             |     |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:             |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:             |     `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams.c:5:9) *const restrict'
@@ -50,7 +50,7 @@ void test() {
 // CHECK-NEXT:             |-RecordDecl {{.*}} <line:5:9> col:9 implicit struct definition
 // CHECK-NEXT:             | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
 // CHECK-NEXT:             `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT:               |-NullStmt {{.*}} <line:6:3>
+// CHECK-NEXT:               |-NullStmt {{.*}} <line:6:3> openmp_structured_block
 // CHECK-NEXT:               |-ImplicitParamDecl {{.*}} <line:5:9> col:9 implicit .global_tid. 'const int *const restrict'
 // CHECK-NEXT:               |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
 // CHECK-NEXT:               `-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams.c:5:9) *const restrict'
index f92c3e84dfd5810d9ec093e628bd4260c6a4c867..e257cfa99ede13225cc4b4f25ec5499dc9307ba7 100644 (file)
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -verify -fopenmp -ast-dump %s | FileCheck %s
-// RUN: %clang_cc1 -verify -fopenmp-simd -ast-dump %s | FileCheck %s
+// RUN: %clang_cc1 -verify -fopenmp -ast-dump %s | FileCheck %s -implicit-check-not=openmp_structured_block
+// RUN: %clang_cc1 -verify -fopenmp-simd -ast-dump %s | FileCheck %s -implicit-check-not=openmp_structured_block
 // expected-no-diagnostics
 
 int ga, gb;
@@ -63,7 +63,7 @@ struct S {
 // CHECK-NEXT: |       `-CapturedStmt {{.+}} <line:[[@LINE-15]]:5, line:[[@LINE-14]]:9>
 // CHECK-NEXT: |         |-CapturedDecl {{.+}} <<invalid sloc>> <invalid sloc> nothrow
 // CHECK-NEXT: |         | |-ForStmt {{.+}} <line:[[@LINE-17]]:5, line:[[@LINE-16]]:9>
-// CHECK:      |         | | `-UnaryOperator {{.+}} <line:[[@LINE-17]]:7, col:9> 'int' lvalue prefix '++'
+// CHECK:      |         | | `-UnaryOperator {{.+}} <line:[[@LINE-17]]:7, col:9> openmp_structured_block 'int' lvalue prefix '++'
 // CHECK-NEXT: |         | |   `-DeclRefExpr {{.+}} <col:9> 'int' lvalue OMPCapturedExpr {{.+}} 'a' 'int &'
 
 #pragma omp declare simd
diff --git a/test/PCH/stmt-openmp_structured_block-bit.cpp b/test/PCH/stmt-openmp_structured_block-bit.cpp
new file mode 100644 (file)
index 0000000..c94624e
--- /dev/null
@@ -0,0 +1,24 @@
+// Test this without pch.
+// RUN: %clang_cc1 -std=c++11 -fopenmp -fsyntax-only -verify %s -ast-dump-all | FileCheck %s -implicit-check-not=openmp_structured_block
+
+// Test with pch. Use '-ast-dump' to force deserialization of function bodies.
+// RUN: %clang_cc1 -std=c++11 -fopenmp -emit-pch -o %t %s
+// RUN: echo "// expected-no-diagnostics" | %clang_cc1 -x c++ -std=c++11 -include-pch %t -fopenmp -fsyntax-only -verify - -ast-dump-all | FileCheck %s -implicit-check-not=openmp_structured_block
+
+void test() {
+#pragma omp parallel
+  ;
+}
+
+// expected-no-diagnostics
+
+// CHECK: TranslationUnitDecl 0x{{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: `-FunctionDecl 0x{{.*}} <{{.*}}stmt-openmp_structured_block-bit.cpp:8:1, line:11:1> line:8:6 {{(test|imported test)}} 'void ()'
+// CHECK-NEXT:   `-CompoundStmt 0x{{.*}} <col:13, line:11:1>
+// CHECK-NEXT:     `-OMPParallelDirective 0x{{.*}} <line:9:9, col:21>
+// CHECK-NEXT:       `-CapturedStmt 0x{{.*}} <line:10:3>
+// CHECK-NEXT:         `-CapturedDecl 0x{{.*}} <<invalid sloc>> <invalid sloc> {{(nothrow|imported <undeserialized declarations> nothrow)}}
+// CHECK-NEXT:           |-NullStmt 0x{{.*}} <col:3> openmp_structured_block
+// CHECK-NEXT:           |-ImplicitParamDecl 0x{{.*}} <line:9:9> col:9 {{(implicit|imported implicit)}} .global_tid. 'const int *const __restrict'
+// CHECK-NEXT:           |-ImplicitParamDecl 0x{{.*}} <col:9> col:9 {{(implicit|imported implicit)}} .bound_tid. 'const int *const __restrict'
+// CHECK-NEXT:           `-ImplicitParamDecl 0x{{.*}} <col:9> col:9 {{(implicit|imported implicit)}} __context '(anonymous struct at {{.*}}stmt-openmp_structured_block-bit.cpp:9:9) *const __restrict'
diff --git a/unittests/AST/ASTPrint.h b/unittests/AST/ASTPrint.h
new file mode 100644 (file)
index 0000000..c3b6b84
--- /dev/null
@@ -0,0 +1,92 @@
+//===- unittests/AST/ASTPrint.h ------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Helpers to simplify testing of printing of AST constructs provided in the/
+// form of the source code.
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/AST/ASTContext.h"
+#include "clang/ASTMatchers/ASTMatchFinder.h"
+#include "clang/Tooling/Tooling.h"
+#include "llvm/ADT/SmallString.h"
+#include "gtest/gtest.h"
+
+namespace clang {
+
+using PolicyAdjusterType =
+    Optional<llvm::function_ref<void(PrintingPolicy &Policy)>>;
+
+static void PrintStmt(raw_ostream &Out, const ASTContext *Context,
+                      const Stmt *S, PolicyAdjusterType PolicyAdjuster) {
+  assert(S != nullptr && "Expected non-null Stmt");
+  PrintingPolicy Policy = Context->getPrintingPolicy();
+  if (PolicyAdjuster)
+    (*PolicyAdjuster)(Policy);
+  S->printPretty(Out, /*Helper*/ nullptr, Policy);
+}
+
+class PrintMatch : public ast_matchers::MatchFinder::MatchCallback {
+  SmallString<1024> Printed;
+  unsigned NumFoundStmts;
+  PolicyAdjusterType PolicyAdjuster;
+
+public:
+  PrintMatch(PolicyAdjusterType PolicyAdjuster)
+      : NumFoundStmts(0), PolicyAdjuster(PolicyAdjuster) {}
+
+  void run(const ast_matchers::MatchFinder::MatchResult &Result) override {
+    const Stmt *S = Result.Nodes.getNodeAs<Stmt>("id");
+    if (!S)
+      return;
+    NumFoundStmts++;
+    if (NumFoundStmts > 1)
+      return;
+
+    llvm::raw_svector_ostream Out(Printed);
+    PrintStmt(Out, Result.Context, S, PolicyAdjuster);
+  }
+
+  StringRef getPrinted() const { return Printed; }
+
+  unsigned getNumFoundStmts() const { return NumFoundStmts; }
+};
+
+template <typename T>
+::testing::AssertionResult
+PrintedStmtMatches(StringRef Code, const std::vector<std::string> &Args,
+                   const T &NodeMatch, StringRef ExpectedPrinted,
+                   PolicyAdjusterType PolicyAdjuster = None) {
+
+  PrintMatch Printer(PolicyAdjuster);
+  ast_matchers::MatchFinder Finder;
+  Finder.addMatcher(NodeMatch, &Printer);
+  std::unique_ptr<tooling::FrontendActionFactory> Factory(
+      tooling::newFrontendActionFactory(&Finder));
+
+  if (!tooling::runToolOnCodeWithArgs(Factory->create(), Code, Args))
+    return testing::AssertionFailure()
+           << "Parsing error in \"" << Code.str() << "\"";
+
+  if (Printer.getNumFoundStmts() == 0)
+    return testing::AssertionFailure() << "Matcher didn't find any statements";
+
+  if (Printer.getNumFoundStmts() > 1)
+    return testing::AssertionFailure()
+           << "Matcher should match only one statement (found "
+           << Printer.getNumFoundStmts() << ")";
+
+  if (Printer.getPrinted() != ExpectedPrinted)
+    return ::testing::AssertionFailure()
+           << "Expected \"" << ExpectedPrinted.str() << "\", got \""
+           << Printer.getPrinted().str() << "\"";
+
+  return ::testing::AssertionSuccess();
+}
+
+} // namespace clang
index c416e5b996b4245d901bfd529a565b3ff5af42ea..25ebd37ef3612771eb3ed34ae6d3d93bad31b66f 100644 (file)
@@ -21,6 +21,7 @@ add_clang_unittest(ASTTests
   ExternalASTSourceTest.cpp
   Language.cpp
   NamedDeclPrinterTest.cpp
+  OMPStructuredBlockTest.cpp
   SourceLocationTest.cpp
   StmtPrinterTest.cpp
   StructuralEquivalenceTest.cpp
diff --git a/unittests/AST/OMPStructuredBlockTest.cpp b/unittests/AST/OMPStructuredBlockTest.cpp
new file mode 100644 (file)
index 0000000..d1138df
--- /dev/null
@@ -0,0 +1,547 @@
+//===- unittests/AST/OMPStructuredBlockTest.cpp ---------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Fine-grained tests for IsOMPStructuredBlock bit of Stmt.
+//
+//===----------------------------------------------------------------------===//
+
+#include "ASTPrint.h"
+#include "clang/AST/ASTContext.h"
+#include "clang/AST/StmtOpenMP.h"
+#include "clang/ASTMatchers/ASTMatchFinder.h"
+#include "clang/Tooling/Tooling.h"
+#include "llvm/ADT/SmallString.h"
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+using namespace clang;
+using namespace ast_matchers;
+using namespace tooling;
+
+namespace {
+
+AST_MATCHER(Stmt, isOMPStructuredBlock) { return Node.isOMPStructuredBlock(); }
+
+const ast_matchers::internal::VariadicDynCastAllOfMatcher<
+    Stmt, OMPExecutableDirective>
+    ompExecutableDirective;
+
+const ast_matchers::internal::VariadicDynCastAllOfMatcher<
+    OMPExecutableDirective, OMPTargetDirective>
+    ompTargetDirective;
+
+StatementMatcher OMPInnermostStructuredBlockMatcher() {
+  return stmt(isOMPStructuredBlock(),
+              unless(hasDescendant(stmt(isOMPStructuredBlock()))))
+      .bind("id");
+}
+
+AST_MATCHER(OMPExecutableDirective, isStandaloneDirective) {
+  return Node.isStandaloneDirective();
+}
+
+StatementMatcher OMPStandaloneDirectiveMatcher() {
+  return stmt(ompExecutableDirective(isStandaloneDirective())).bind("id");
+}
+
+template <typename T>
+::testing::AssertionResult
+PrintedOMPStmtMatches(StringRef Code, const T &NodeMatch,
+                      StringRef ExpectedPrinted,
+                      PolicyAdjusterType PolicyAdjuster = None) {
+  std::vector<std::string> Args = {
+      "-fopenmp",
+  };
+  return PrintedStmtMatches(Code, Args, NodeMatch, ExpectedPrinted,
+                            PolicyAdjuster);
+}
+
+static testing::AssertionResult NoMatches(StringRef Code,
+                                          const StatementMatcher &StmtMatch) {
+  PrintMatch Printer((PolicyAdjusterType()));
+  MatchFinder Finder;
+  Finder.addMatcher(StmtMatch, &Printer);
+  std::unique_ptr<FrontendActionFactory> Factory(
+      newFrontendActionFactory(&Finder));
+  if (!runToolOnCode(Factory->create(), Code))
+    return testing::AssertionFailure()
+           << "Parsing error in \"" << Code.str() << "\"";
+  if (Printer.getNumFoundStmts() == 0)
+    return testing::AssertionSuccess();
+  return testing::AssertionFailure()
+         << "Matcher should match only zero statements (found "
+         << Printer.getNumFoundStmts() << ")";
+}
+
+} // unnamed namespace
+
+TEST(OMPStructuredBlock, TestAtomic) {
+  const char *Source =
+      R"(
+void test(int i) {
+#pragma omp atomic
+++i;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), "++i"));
+}
+
+TEST(OMPStructuredBlock, TestBarrier) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp barrier
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source, OMPStandaloneDirectiveMatcher(),
+                                    "#pragma omp barrier\n"));
+  ASSERT_TRUE(NoMatches(Source, OMPInnermostStructuredBlockMatcher()));
+}
+
+TEST(OMPStructuredBlock, TestCancel) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp parallel
+{
+    #pragma omp cancel parallel
+}
+})";
+  ASSERT_TRUE(
+      PrintedOMPStmtMatches(Source, OMPInnermostStructuredBlockMatcher(), R"({
+    #pragma omp cancel parallel
+}
+)"));
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source, OMPStandaloneDirectiveMatcher(),
+                                    "#pragma omp cancel parallel\n"));
+}
+
+TEST(OMPStructuredBlock, TestCancellationPoint) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp parallel
+{
+#pragma omp cancellation point parallel
+}
+})";
+  ASSERT_TRUE(
+      PrintedOMPStmtMatches(Source, OMPInnermostStructuredBlockMatcher(), R"({
+    #pragma omp cancellation point parallel
+}
+)"));
+  ASSERT_TRUE(
+      PrintedOMPStmtMatches(Source, OMPStandaloneDirectiveMatcher(),
+                            "#pragma omp cancellation point parallel\n"));
+}
+
+TEST(OMPStructuredBlock, TestCritical) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp critical
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+//----------------------------------------------------------------------------//
+// Loop tests
+//----------------------------------------------------------------------------//
+
+class OMPStructuredBlockLoop : public ::testing::TestWithParam<const char *> {};
+
+TEST_P(OMPStructuredBlockLoop, TestDirective0) {
+  const std::string Source =
+      R"(
+void test(int x) {
+#pragma omp )" +
+      std::string(GetParam()) + R"(
+for (int i = 0; i < x; i++)
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST_P(OMPStructuredBlockLoop, TestDirective1) {
+  const std::string Source =
+      R"(
+void test(int x, int y) {
+#pragma omp )" +
+      std::string(GetParam()) + R"(
+for (int i = 0; i < x; i++)
+for (int i = 0; i < y; i++)
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source,
+                                    OMPInnermostStructuredBlockMatcher(),
+                                    "for (int i = 0; i < y; i++)\n    ;\n"));
+}
+
+TEST_P(OMPStructuredBlockLoop, TestDirectiveCollapse1) {
+  const std::string Source =
+      R"(
+void test(int x, int y) {
+#pragma omp )" +
+      std::string(GetParam()) + R"( collapse(1)
+for (int i = 0; i < x; i++)
+for (int i = 0; i < y; i++)
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source,
+                                    OMPInnermostStructuredBlockMatcher(),
+                                    "for (int i = 0; i < y; i++)\n    ;\n"));
+}
+
+TEST_P(OMPStructuredBlockLoop, TestDirectiveCollapse2) {
+  const std::string Source =
+      R"(
+void test(int x, int y) {
+#pragma omp )" +
+      std::string(GetParam()) + R"( collapse(2)
+for (int i = 0; i < x; i++)
+for (int i = 0; i < y; i++)
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST_P(OMPStructuredBlockLoop, TestDirectiveCollapse22) {
+  const std::string Source =
+      R"(
+void test(int x, int y, int z) {
+#pragma omp )" +
+      std::string(GetParam()) + R"( collapse(2)
+for (int i = 0; i < x; i++)
+for (int i = 0; i < y; i++)
+for (int i = 0; i < z; i++)
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source,
+                                    OMPInnermostStructuredBlockMatcher(),
+                                    "for (int i = 0; i < z; i++)\n    ;\n"));
+}
+
+INSTANTIATE_TEST_CASE_P(
+    OMPStructuredBlockLoopDirectives, OMPStructuredBlockLoop,
+    ::testing::Values("simd", "for", "for simd", "parallel for",
+                      "parallel for simd", "target parallel for", "taskloop",
+                      "taskloop simd", "distribute", "distribute parallel for",
+                      "distribute parallel for simd", "distribute simd",
+                      "target parallel for simd", "target simd",
+                      "target\n#pragma omp teams distribute",
+                      "target\n#pragma omp teams distribute simd",
+                      "target\n#pragma omp teams distribute parallel for simd",
+                      "target\n#pragma omp teams distribute parallel for",
+                      "target teams distribute",
+                      "target teams distribute parallel for",
+                      "target teams distribute parallel for simd",
+                      "target teams distribute simd"), );
+
+//----------------------------------------------------------------------------//
+// End Loop tests
+//----------------------------------------------------------------------------//
+
+TEST(OMPStructuredBlock, TestFlush) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp flush
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source, OMPStandaloneDirectiveMatcher(),
+                                    "#pragma omp flush\n"));
+  ASSERT_TRUE(NoMatches(Source, OMPInnermostStructuredBlockMatcher()));
+}
+
+TEST(OMPStructuredBlock, TestMaster) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp master
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TestOrdered0) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp ordered
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TestOrdered1) {
+  const char *Source =
+      R"(
+void test(int x) {
+#pragma omp for ordered
+for (int i = 0; i < x; i++)
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TestOrdered2) {
+  const char *Source =
+      R"(
+void test(int x) {
+#pragma omp for ordered(1)
+for (int i = 0; i < x; i++) {
+#pragma omp ordered depend(source)
+}
+})";
+  ASSERT_TRUE(
+      PrintedOMPStmtMatches(Source, OMPInnermostStructuredBlockMatcher(),
+                            "{\n    #pragma omp ordered depend(source)\n}\n"));
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source, OMPStandaloneDirectiveMatcher(),
+                                    "#pragma omp ordered depend(source)\n"));
+}
+
+TEST(OMPStructuredBlock, DISABLED_TestParallelMaster0XFAIL) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp parallel master
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, DISABLED_TestParallelMaster1XFAIL) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp parallel master
+{ ; }
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), "{\n    ;\n}\n"));
+}
+
+TEST(OMPStructuredBlock, TestParallelSections) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp parallel sections
+{ ; }
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), "{\n    ;\n}\n"));
+}
+
+TEST(OMPStructuredBlock, TestParallelDirective) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp parallel
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+const ast_matchers::internal::VariadicDynCastAllOfMatcher<
+    OMPExecutableDirective, OMPSectionsDirective>
+    ompSectionsDirective;
+
+const ast_matchers::internal::VariadicDynCastAllOfMatcher<
+    OMPExecutableDirective, OMPSectionDirective>
+    ompSectionDirective;
+
+StatementMatcher OMPSectionsDirectiveMatcher() {
+  return stmt(
+             isOMPStructuredBlock(),
+             hasAncestor(ompExecutableDirective(ompSectionsDirective())),
+             unless(hasAncestor(ompExecutableDirective(ompSectionDirective()))))
+      .bind("id");
+}
+
+TEST(OMPStructuredBlock, TestSectionDirective) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp sections
+{
+#pragma omp section
+;
+}
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source, OMPSectionsDirectiveMatcher(),
+                                    "{\n"
+                                    "    #pragma omp section\n"
+                                    "        ;\n"
+                                    "}\n"));
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TestSections) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp sections
+{ ; }
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), "{\n    ;\n}\n"));
+}
+
+TEST(OMPStructuredBlock, TestSingleDirective) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp single
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TesTargetDataDirective) {
+  const char *Source =
+      R"(
+void test(int x) {
+#pragma omp target data map(x)
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TesTargetEnterDataDirective) {
+  const char *Source =
+      R"(
+void test(int x) {
+#pragma omp target enter data map(to : x)
+})";
+  ASSERT_TRUE(
+      PrintedOMPStmtMatches(Source, OMPStandaloneDirectiveMatcher(),
+                            "#pragma omp target enter data map(to: x)\n"));
+  ASSERT_TRUE(NoMatches(Source, OMPInnermostStructuredBlockMatcher()));
+}
+
+TEST(OMPStructuredBlock, TesTargetExitDataDirective) {
+  const char *Source =
+      R"(
+void test(int x) {
+#pragma omp target exit data map(from : x)
+})";
+  ASSERT_TRUE(
+      PrintedOMPStmtMatches(Source, OMPStandaloneDirectiveMatcher(),
+                            "#pragma omp target exit data map(from: x)\n"));
+  ASSERT_TRUE(NoMatches(Source, OMPInnermostStructuredBlockMatcher()));
+}
+
+TEST(OMPStructuredBlock, TestTargetParallelDirective) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp target parallel
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TestTargetTeams) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp target teams
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TestTargetUpdateDirective) {
+  const char *Source =
+      R"(
+void test(int x) {
+#pragma omp target update to(x)
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source, OMPStandaloneDirectiveMatcher(),
+                                    "#pragma omp target update to(x)\n"));
+  ASSERT_TRUE(NoMatches(Source, OMPInnermostStructuredBlockMatcher()));
+}
+
+TEST(OMPStructuredBlock, TestTarget) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp target
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TestTask) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp task
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TestTaskgroup) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp taskgroup
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
+
+TEST(OMPStructuredBlock, TestTaskwaitDirective) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp taskwait
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source, OMPStandaloneDirectiveMatcher(),
+                                    "#pragma omp taskwait\n"));
+  ASSERT_TRUE(NoMatches(Source, OMPInnermostStructuredBlockMatcher()));
+}
+
+TEST(OMPStructuredBlock, TestTaskyieldDirective) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp taskyield
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(Source, OMPStandaloneDirectiveMatcher(),
+                                    "#pragma omp taskyield\n"));
+  ASSERT_TRUE(NoMatches(Source, OMPInnermostStructuredBlockMatcher()));
+}
+
+TEST(OMPStructuredBlock, TestTeams) {
+  const char *Source =
+      R"(
+void test() {
+#pragma omp target
+#pragma omp teams
+;
+})";
+  ASSERT_TRUE(PrintedOMPStmtMatches(
+      Source, OMPInnermostStructuredBlockMatcher(), ";\n"));
+}
index fb991496dba164ef49833cca5a51bf12cb022875..abd56c2875ea3b601e61722c6718741c8e35febd 100644 (file)
@@ -18,6 +18,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "ASTPrint.h"
 #include "clang/AST/ASTContext.h"
 #include "clang/ASTMatchers/ASTMatchFinder.h"
 #include "clang/Tooling/Tooling.h"
@@ -30,81 +31,6 @@ using namespace tooling;
 
 namespace {
 
-using PolicyAdjusterType =
-    Optional<llvm::function_ref<void(PrintingPolicy &Policy)>>;
-
-void PrintStmt(raw_ostream &Out, const ASTContext *Context, const Stmt *S,
-               PolicyAdjusterType PolicyAdjuster) {
-  assert(S != nullptr && "Expected non-null Stmt");
-  PrintingPolicy Policy = Context->getPrintingPolicy();
-  if (PolicyAdjuster)
-    (*PolicyAdjuster)(Policy);
-  S->printPretty(Out, /*Helper*/ nullptr, Policy);
-}
-
-class PrintMatch : public MatchFinder::MatchCallback {
-  SmallString<1024> Printed;
-  unsigned NumFoundStmts;
-  PolicyAdjusterType PolicyAdjuster;
-
-public:
-  PrintMatch(PolicyAdjusterType PolicyAdjuster)
-      : NumFoundStmts(0), PolicyAdjuster(PolicyAdjuster) {}
-
-  void run(const MatchFinder::MatchResult &Result) override {
-    const Stmt *S = Result.Nodes.getNodeAs<Stmt>("id");
-    if (!S)
-      return;
-    NumFoundStmts++;
-    if (NumFoundStmts > 1)
-      return;
-
-    llvm::raw_svector_ostream Out(Printed);
-    PrintStmt(Out, Result.Context, S, PolicyAdjuster);
-  }
-
-  StringRef getPrinted() const {
-    return Printed;
-  }
-
-  unsigned getNumFoundStmts() const {
-    return NumFoundStmts;
-  }
-};
-
-template <typename T>
-::testing::AssertionResult
-PrintedStmtMatches(StringRef Code, const std::vector<std::string> &Args,
-                   const T &NodeMatch, StringRef ExpectedPrinted,
-                   PolicyAdjusterType PolicyAdjuster = None) {
-
-  PrintMatch Printer(PolicyAdjuster);
-  MatchFinder Finder;
-  Finder.addMatcher(NodeMatch, &Printer);
-  std::unique_ptr<FrontendActionFactory> Factory(
-      newFrontendActionFactory(&Finder));
-
-  if (!runToolOnCodeWithArgs(Factory->create(), Code, Args))
-    return testing::AssertionFailure()
-      << "Parsing error in \"" << Code.str() << "\"";
-
-  if (Printer.getNumFoundStmts() == 0)
-    return testing::AssertionFailure()
-        << "Matcher didn't find any statements";
-
-  if (Printer.getNumFoundStmts() > 1)
-    return testing::AssertionFailure()
-        << "Matcher should match only one statement "
-           "(found " << Printer.getNumFoundStmts() << ")";
-
-  if (Printer.getPrinted() != ExpectedPrinted)
-    return ::testing::AssertionFailure()
-      << "Expected \"" << ExpectedPrinted.str() << "\", "
-         "got \"" << Printer.getPrinted().str() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
 enum class StdVer { CXX98, CXX11, CXX14, CXX17, CXX2a };
 
 DeclarationMatcher FunctionBodyMatcher(StringRef ContainingFunction) {