r356570 - [clang][OpeMP] Model OpenMP structured-block in AST (PR40563)

Diana Picus via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 22 06:17:35 PDT 2019


Hi Roman,

This is failing on some of our buildbots, e.g.
http://lab.llvm.org:8011/builders/clang-cmake-aarch64-quick/builds/17921
http://lab.llvm.org:8011/builders/clang-cmake-aarch64-global-isel/builds/10248

I think they didn't send an email because they were already red with
another failure.
Could you please have a look?

Thanks,
Diana

On Wed, 20 Mar 2019 at 17:31, Roman Lebedev via cfe-commits
<cfe-commits at lists.llvm.org> wrote:
>
> Author: lebedevri
> Date: Wed Mar 20 09:32:36 2019
> New Revision: 356570
>
> URL: http://llvm.org/viewvc/llvm-project?rev=356570&view=rev
> Log:
> [clang][OpeMP] Model OpenMP structured-block in AST (PR40563)
>
> 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
>
> Added:
>     cfe/trunk/test/PCH/stmt-openmp_structured_block-bit.cpp
>     cfe/trunk/unittests/AST/ASTPrint.h
>     cfe/trunk/unittests/AST/OMPStructuredBlockTest.cpp
> Modified:
>     cfe/trunk/include/clang/AST/Stmt.h
>     cfe/trunk/include/clang/AST/StmtOpenMP.h
>     cfe/trunk/include/clang/AST/TextNodeDumper.h
>     cfe/trunk/lib/AST/StmtOpenMP.cpp
>     cfe/trunk/lib/AST/TextNodeDumper.cpp
>     cfe/trunk/lib/Sema/SemaOpenMP.cpp
>     cfe/trunk/lib/Serialization/ASTReaderStmt.cpp
>     cfe/trunk/lib/Serialization/ASTWriterDecl.cpp
>     cfe/trunk/lib/Serialization/ASTWriterStmt.cpp
>     cfe/trunk/test/AST/ast-dump-openmp-atomic.c
>     cfe/trunk/test/AST/ast-dump-openmp-barrier.c
>     cfe/trunk/test/AST/ast-dump-openmp-cancel.c
>     cfe/trunk/test/AST/ast-dump-openmp-cancellation-point.c
>     cfe/trunk/test/AST/ast-dump-openmp-critical.c
>     cfe/trunk/test/AST/ast-dump-openmp-distribute-parallel-for-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-distribute-parallel-for.c
>     cfe/trunk/test/AST/ast-dump-openmp-distribute-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-distribute.c
>     cfe/trunk/test/AST/ast-dump-openmp-flush.c
>     cfe/trunk/test/AST/ast-dump-openmp-for-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-for.c
>     cfe/trunk/test/AST/ast-dump-openmp-master.c
>     cfe/trunk/test/AST/ast-dump-openmp-ordered.c
>     cfe/trunk/test/AST/ast-dump-openmp-parallel-for-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-parallel-for.c
>     cfe/trunk/test/AST/ast-dump-openmp-parallel-master-XFAIL.c
>     cfe/trunk/test/AST/ast-dump-openmp-parallel-sections.c
>     cfe/trunk/test/AST/ast-dump-openmp-parallel.c
>     cfe/trunk/test/AST/ast-dump-openmp-section.c
>     cfe/trunk/test/AST/ast-dump-openmp-sections.c
>     cfe/trunk/test/AST/ast-dump-openmp-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-single.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-data.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-enter-data.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-exit-data.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-parallel-for-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-parallel-for.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-parallel.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-teams.c
>     cfe/trunk/test/AST/ast-dump-openmp-target-update.c
>     cfe/trunk/test/AST/ast-dump-openmp-target.c
>     cfe/trunk/test/AST/ast-dump-openmp-task.c
>     cfe/trunk/test/AST/ast-dump-openmp-taskgroup.c
>     cfe/trunk/test/AST/ast-dump-openmp-taskloop-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-taskloop.c
>     cfe/trunk/test/AST/ast-dump-openmp-taskwait.c
>     cfe/trunk/test/AST/ast-dump-openmp-taskyield.c
>     cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-parallel-for-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-parallel-for.c
>     cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-simd.c
>     cfe/trunk/test/AST/ast-dump-openmp-teams-distribute.c
>     cfe/trunk/test/AST/ast-dump-openmp-teams.c
>     cfe/trunk/test/AST/dump.cpp
>     cfe/trunk/unittests/AST/CMakeLists.txt
>     cfe/trunk/unittests/AST/StmtPrinterTest.cpp
>
> Modified: cfe/trunk/include/clang/AST/Stmt.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Stmt.h?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/Stmt.h (original)
> +++ cfe/trunk/include/clang/AST/Stmt.h Wed Mar 20 09:32:36 2019
> @@ -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.
>
> Modified: cfe/trunk/include/clang/AST/StmtOpenMP.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/StmtOpenMP.h?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/StmtOpenMP.h (original)
> +++ cfe/trunk/include/clang/AST/StmtOpenMP.h Wed Mar 20 09:32:36 2019
> @@ -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.
>
> Modified: cfe/trunk/include/clang/AST/TextNodeDumper.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/TextNodeDumper.h?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/TextNodeDumper.h (original)
> +++ cfe/trunk/include/clang/AST/TextNodeDumper.h Wed Mar 20 09:32:36 2019
> @@ -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);
>
> Modified: cfe/trunk/lib/AST/StmtOpenMP.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtOpenMP.cpp?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/StmtOpenMP.cpp (original)
> +++ cfe/trunk/lib/AST/StmtOpenMP.cpp Wed Mar 20 09:32:36 2019
> @@ -22,6 +22,25 @@ void OMPExecutableDirective::setClauses(
>    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");
>
> Modified: cfe/trunk/lib/AST/TextNodeDumper.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/TextNodeDumper.cpp?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/TextNodeDumper.cpp (original)
> +++ cfe/trunk/lib/AST/TextNodeDumper.cpp Wed Mar 20 09:32:36 2019
> @@ -121,6 +121,9 @@ void TextNodeDumper::Visit(const Stmt *N
>    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::VisitPragmaDetectMi
>    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);
>
> Modified: cfe/trunk/lib/Sema/SemaOpenMP.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOpenMP.cpp?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaOpenMP.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaOpenMP.cpp Wed Mar 20 09:32:36 2019
> @@ -3915,6 +3915,8 @@ StmtResult Sema::ActOnOpenMPExecutableDi
>      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::ActOnOpenMPExecutableDi
>
>    if (ErrorFound)
>      return StmtError();
> +
> +  if (!(Res.getAs<OMPExecutableDirective>()->isStandaloneDirective())) {
> +    Res.getAs<OMPExecutableDirective>()
> +        ->getStructuredBlock()
> +        ->setIsOMPStructuredBlock(true);
> +  }
> +
>    return Res;
>  }
>
>
> Modified: cfe/trunk/lib/Serialization/ASTReaderStmt.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReaderStmt.cpp?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Serialization/ASTReaderStmt.cpp (original)
> +++ cfe/trunk/lib/Serialization/ASTReaderStmt.cpp Wed Mar 20 09:32:36 2019
> @@ -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::ReadTemplateKWAndArg
>  }
>
>  void ASTStmtReader::VisitStmt(Stmt *S) {
> +  S->setIsOMPStructuredBlock(Record.readInt());
>    assert(Record.getIdx() == NumStmtFields && "Incorrect statement field count");
>  }
>
>
> Modified: cfe/trunk/lib/Serialization/ASTWriterDecl.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriterDecl.cpp?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Serialization/ASTWriterDecl.cpp (original)
> +++ cfe/trunk/lib/Serialization/ASTWriterDecl.cpp Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/lib/Serialization/ASTWriterStmt.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriterStmt.cpp?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Serialization/ASTWriterStmt.cpp (original)
> +++ cfe/trunk/lib/Serialization/ASTWriterStmt.cpp Wed Mar 20 09:32:36 2019
> @@ -67,6 +67,7 @@ void ASTStmtWriter::AddTemplateKWAndArgs
>  }
>
>  void ASTStmtWriter::VisitStmt(Stmt *S) {
> +  Record.push_back(S->StmtBits.IsOMPStructuredBlock);
>  }
>
>  void ASTStmtWriter::VisitNullStmt(NullStmt *S) {
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-atomic.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-atomic.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-atomic.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-atomic.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-barrier.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-barrier.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-barrier.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-barrier.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-cancel.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-cancel.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-cancel.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-cancel.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-cancellation-point.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-cancellation-point.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-cancellation-point.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-cancellation-point.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-critical.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-critical.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-critical.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-critical.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-distribute-parallel-for-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-distribute-parallel-for-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-distribute-parallel-for-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-distribute-parallel-for-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-distribute-parallel-for.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-distribute-parallel-for.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-distribute-parallel-for.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-distribute-parallel-for.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-distribute-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-distribute-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-distribute-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-distribute-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-distribute.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-distribute.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-distribute.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-distribute.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-flush.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-flush.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-flush.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-flush.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-for-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-for-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-for-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-for-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-for.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-for.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-for.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-for.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-master.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-master.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-master.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-master.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-ordered.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-ordered.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-ordered.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-ordered.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-parallel-for-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-parallel-for-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-parallel-for-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-parallel-for-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-parallel-for.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-parallel-for.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-parallel-for.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-parallel-for.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-parallel-master-XFAIL.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-parallel-master-XFAIL.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-parallel-master-XFAIL.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-parallel-master-XFAIL.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-parallel-sections.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-parallel-sections.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-parallel-sections.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-parallel-sections.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-parallel.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-parallel.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-parallel.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-parallel.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-section.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-section.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-section.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-section.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-sections.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-sections.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-sections.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-sections.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-single.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-single.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-single.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-single.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-data.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-data.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-data.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-data.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-enter-data.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-enter-data.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-enter-data.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-enter-data.c Wed Mar 20 09:32:36 2019
> @@ -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>
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-exit-data.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-exit-data.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-exit-data.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-exit-data.c Wed Mar 20 09:32:36 2019
> @@ -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>
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-parallel-for-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-parallel-for-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-parallel-for-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-parallel-for-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-parallel-for.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-parallel-for.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-parallel-for.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-parallel-for.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-parallel.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-parallel.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-parallel.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-parallel.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-teams-distribute.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-teams.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-teams.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-teams.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-teams.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target-update.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target-update.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target-update.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target-update.c Wed Mar 20 09:32:36 2019
> @@ -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>
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-target.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-target.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-target.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-target.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-task.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-task.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-task.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-task.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-taskgroup.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-taskgroup.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-taskgroup.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-taskgroup.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-taskloop-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-taskloop-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-taskloop-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-taskloop-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-taskloop.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-taskloop.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-taskloop.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-taskloop.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-taskwait.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-taskwait.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-taskwait.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-taskwait.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-taskyield.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-taskyield.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-taskyield.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-taskyield.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-parallel-for-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-parallel-for-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-parallel-for-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-parallel-for-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-parallel-for.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-parallel-for.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-parallel-for.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-parallel-for.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-simd.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-simd.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-simd.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-teams-distribute-simd.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-teams-distribute.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-teams-distribute.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-teams-distribute.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-teams-distribute.c Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/test/AST/ast-dump-openmp-teams.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-openmp-teams.c?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-openmp-teams.c (original)
> +++ cfe/trunk/test/AST/ast-dump-openmp-teams.c Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Modified: cfe/trunk/test/AST/dump.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/dump.cpp?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/dump.cpp (original)
> +++ cfe/trunk/test/AST/dump.cpp Wed Mar 20 09:32:36 2019
> @@ -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
>
> Added: cfe/trunk/test/PCH/stmt-openmp_structured_block-bit.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/stmt-openmp_structured_block-bit.cpp?rev=356570&view=auto
> ==============================================================================
> --- cfe/trunk/test/PCH/stmt-openmp_structured_block-bit.cpp (added)
> +++ cfe/trunk/test/PCH/stmt-openmp_structured_block-bit.cpp Wed Mar 20 09:32:36 2019
> @@ -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'
>
> Added: cfe/trunk/unittests/AST/ASTPrint.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/AST/ASTPrint.h?rev=356570&view=auto
> ==============================================================================
> --- cfe/trunk/unittests/AST/ASTPrint.h (added)
> +++ cfe/trunk/unittests/AST/ASTPrint.h Wed Mar 20 09:32:36 2019
> @@ -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
>
> Modified: cfe/trunk/unittests/AST/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/AST/CMakeLists.txt?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/unittests/AST/CMakeLists.txt (original)
> +++ cfe/trunk/unittests/AST/CMakeLists.txt Wed Mar 20 09:32:36 2019
> @@ -21,6 +21,7 @@ add_clang_unittest(ASTTests
>    ExternalASTSourceTest.cpp
>    Language.cpp
>    NamedDeclPrinterTest.cpp
> +  OMPStructuredBlockTest.cpp
>    SourceLocationTest.cpp
>    StmtPrinterTest.cpp
>    StructuralEquivalenceTest.cpp
>
> Added: cfe/trunk/unittests/AST/OMPStructuredBlockTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/AST/OMPStructuredBlockTest.cpp?rev=356570&view=auto
> ==============================================================================
> --- cfe/trunk/unittests/AST/OMPStructuredBlockTest.cpp (added)
> +++ cfe/trunk/unittests/AST/OMPStructuredBlockTest.cpp Wed Mar 20 09:32:36 2019
> @@ -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"));
> +}
>
> Modified: cfe/trunk/unittests/AST/StmtPrinterTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/AST/StmtPrinterTest.cpp?rev=356570&r1=356569&r2=356570&view=diff
> ==============================================================================
> --- cfe/trunk/unittests/AST/StmtPrinterTest.cpp (original)
> +++ cfe/trunk/unittests/AST/StmtPrinterTest.cpp Wed Mar 20 09:32:36 2019
> @@ -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) {
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


More information about the cfe-commits mailing list